// ***************************************************************************
// ***************************************************************************
// Copyright (C) 2014-2023 Analog Devices, Inc. All rights reserved.
//
// In this HDL repository, there are many different and unique modules, consisting
// of various HDL (Verilog or VHDL) components. The individual modules are
// developed independently, and may be accompanied by separate and unique license
// terms.
//
// The user should read each of these license terms, and understand the
// freedoms and responsibilities that he or she has by using this source/core.
//
// This core is distributed in the hope that it will be useful, but WITHOUT ANY
// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
// A PARTICULAR PURPOSE.
//
// Redistribution and use of source or resulting binaries, with or without modification
// of this file, are permitted under one of the following two license terms:
//
//   1. The GNU General Public License version 2 as published by the
//      Free Software Foundation, which can be found in the top level directory
//      of this repository (LICENSE_GPL2), and also online at:
//      <https://www.gnu.org/licenses/old-licenses/gpl-2.0.html>
//
// OR
//
//   2. An ADI specific BSD license, which can be found in the top level directory
//      of this repository (LICENSE_ADIBSD), and also on-line at:
//      https://github.com/analogdevicesinc/hdl/blob/main/LICENSE_ADIBSD
//      This will allow to generate bit files and not release the source code,
//      as long as it attaches to an ADI device.
//
// ***************************************************************************
// ***************************************************************************
// AUTO GENERATED BY util_adxcvr.pl, DO NOT MODIFY!

`timescale 1ns/1ps

module util_adxcvr #(

  // gtxe2(2), gthe3(5), gthe4(8), gtye4(9)

  parameter   integer XCVR_TYPE = 0,

  parameter   real RX_LANE_RATE = 12.5,
  parameter   real TX_LANE_RATE = 12.5,

  parameter LINK_MODE = 1, // 2 - 64B/66B;  1 - 8B/10B
  /* Only 4 is supported at the moment for 8b/10b and 8 for 64b */
  parameter DATA_PATH_WIDTH = LINK_MODE == 2 ? 8 : 4,

  // qpll-configuration

  parameter   integer QPLL_REFCLK_DIV = 1,
  parameter   integer QPLL_FBDIV_RATIO = 1,
  parameter   [15:0]  POR_CFG = 16'b0000000000000110,
  parameter   [15:0]  PPF0_CFG = 16'b0000011000000000,
  parameter   [15:0]  PPF1_CFG = 16'b0000011000000000,
  parameter   [26:0]  QPLL_CFG = 27'h0680181,
  parameter   [ 9:0]  QPLL_FBDIV =  10'b0000110000,
  parameter   [15:0]  QPLL_CFG0 = 16'b0011001100011100,
  parameter   [15:0]  QPLL_CFG1 = 16'b1101000000111000,
  parameter   [15:0]  QPLL_CFG1_G3 = 16'b1101000000111000,
  parameter   [15:0]  QPLL_CFG2 = 16'b0000111111000000,
  parameter   [15:0]  QPLL_CFG2_G3 = 16'b0000111111000000,
  parameter   [15:0]  QPLL_CFG3 = 16'b0000000100100000,
  parameter   [15:0]  QPLL_CFG4 = 16'b0000000000000011,
  parameter   [15:0]  QPLL_CP_G3 = 10'b0000011111,
  parameter   [15:0]  QPLL_LPF = 10'b0100110111,
  parameter   [15:0]  QPLL_CP = 10'b0001111111,

  // cpll-configuration

  parameter   integer CPLL_FBDIV = 2,
  parameter   integer CPLL_FBDIV_4_5 = 5,
  parameter   [15:0]  CPLL_CFG0 = 16'b0000000111111010,
  parameter   [15:0]  CPLL_CFG1 = 16'b0000000000100011,
  parameter   [15:0]  CPLL_CFG2 = 16'b0000000000000010,
  parameter   [15:0]  CPLL_CFG3 = 16'b0000000000000000,
  parameter   [15:0]  CH_HSPMUX        =  16'b0010010000100100,
  parameter   integer PREIQ_FREQ_BST   = 0,
  parameter   [15:0]  RXPI_CFG0        = 16'b0000000000000010,
  parameter   [15:0]  RXPI_CFG1        = 16'b0000000000010101,
  parameter   [2:0]   RTX_BUF_CML_CTRL = 3'b011,

  // tx-configuration

  parameter   integer TX_NUM_OF_LANES = 8,
  parameter   integer TX_OUT_DIV = 1,
  parameter   integer TX_CLK25_DIV = 20,
  parameter   integer TX_LANE_INVERT = 0,
  parameter   [15:0]  TX_PI_BIASSET = 1,
  parameter   [15:0]  TXPI_CFG = 16'b0000000001010100,
  parameter   [15:0]  A_TXDIFFCTRL = 5'b10110,

  // rx-configuration

  parameter   integer RX_NUM_OF_LANES = 8,
  parameter   integer RX_OUT_DIV = 1,
  parameter   integer RX_CLK25_DIV = 20,
  parameter   [15:0]  RX_DFE_LPM_CFG = 16'h0104,
  parameter   [31:0]  RX_PMA_CFG = 32'h001e7080,
  parameter   [72:0]  RX_CDR_CFG = 72'h0b000023ff10400020,
  parameter   [15:0]  RXCDR_CFG0 = 16'b0000000000000010,
  parameter   [15:0]  RXCDR_CFG2 = 16'b0000001001101001,
  parameter   [ 9:0]  RXCDR_CFG2_GEN2 = 10'b1001100101,
  parameter   [15:0]  RXCDR_CFG2_GEN4 = 16'b0000000010110100,
  parameter   [15:0]  RXCDR_CFG3 = 16'b0000000000010010,
  parameter   [ 5:0]  RXCDR_CFG3_GEN2 = 6'b011010,
  parameter   [15:0]  RXCDR_CFG3_GEN3 = 16'b0000000000010010,
  parameter   [15:0]  RXCDR_CFG3_GEN4 = 16'b0000000000100100,
  parameter   [15:0]  RXDFE_KH_CFG2 = 16'h0200,
  parameter   [15:0]  RXDFE_KH_CFG3 = 16'h4101,
  parameter   [ 1:0]  RX_WIDEMODE_CDR = 2'b00,
  parameter   [ 0:0]  RX_XMODE_SEL = 1'b1,
  parameter   integer TXDRV_FREQBAND = 0,
  parameter   [15:0]  TXFE_CFG0 = 16'b0000001111000010,
  parameter   [15:0]  TXFE_CFG1 = 16'b0110110000000000,
  parameter   [15:0]  TXFE_CFG2 = 16'b0110110000000000,
  parameter   [15:0]  TXFE_CFG3 = 16'b0110110000000000,
  parameter   [15:0]  TXPI_CFG0 = 16'b0000001100000000,
  parameter   [15:0]  TXPI_CFG1 = 16'b0001000000000000,
  parameter   integer TXSWBST_EN = 0,
  parameter   integer RX_LANE_INVERT = 0
) (

  input           up_rstn,
  input           up_clk,

  input           qpll_ref_clk_0,
  input           up_qpll_rst_0,
  input           cpll_ref_clk_0,
  input           up_cpll_rst_0,

  input                            rx_0_p,
  input                            rx_0_n,
  output                           rx_out_clk_0,
  output                           rx_out_clk_div2_0,
  input                            rx_clk_0,
  input                            rx_clk_2x_0,
  output  [DATA_PATH_WIDTH-1:0]    rx_charisk_0,
  output  [DATA_PATH_WIDTH-1:0]    rx_disperr_0,
  output  [DATA_PATH_WIDTH-1:0]    rx_notintable_0,
  output  [DATA_PATH_WIDTH*8-1:0]  rx_data_0,
  input                            rx_calign_0,
  output  [1:0]                    rx_header_0,
  output                           rx_block_sync_0,

  output                           tx_0_p,
  output                           tx_0_n,
  output                           tx_out_clk_0,
  output                           tx_out_clk_div2_0,
  input                            tx_clk_0,
  input                            tx_clk_2x_0,
  input   [DATA_PATH_WIDTH-1:0]    tx_charisk_0,
  input   [DATA_PATH_WIDTH*8-1:0]  tx_data_0,
  input   [1:0]                    tx_header_0,

  input           up_cm_enb_0,
  input   [11:0]  up_cm_addr_0,
  input           up_cm_wr_0,
  input   [15:0]  up_cm_wdata_0,
  output  [15:0]  up_cm_rdata_0,
  output          up_cm_ready_0,
  input           up_es_enb_0,
  input   [11:0]  up_es_addr_0,
  input           up_es_wr_0,
  input   [15:0]  up_es_wdata_0,
  output  [15:0]  up_es_rdata_0,
  output          up_es_ready_0,
  input           up_es_reset_0,
  output          up_rx_pll_locked_0,
  input           up_rx_rst_0,
  input           up_rx_user_ready_0,
  output          up_rx_rst_done_0,
  input   [ 3:0]  up_rx_prbssel_0,
  input           up_rx_prbscntreset_0,
  output          up_rx_prbserr_0,
  output          up_rx_prbslocked_0,
  output  [ 1:0]  up_rx_bufstatus_0,
  input           up_rx_bufstatus_rst_0,
  input           up_rx_lpm_dfe_n_0,
  input   [ 2:0]  up_rx_rate_0,
  input   [ 1:0]  up_rx_sys_clk_sel_0,
  input   [ 2:0]  up_rx_out_clk_sel_0,
  input           up_rx_enb_0,
  input   [11:0]  up_rx_addr_0,
  input           up_rx_wr_0,
  input   [15:0]  up_rx_wdata_0,
  output  [15:0]  up_rx_rdata_0,
  output          up_rx_ready_0,
  output          up_tx_pll_locked_0,
  input           up_tx_rst_0,
  input           up_tx_user_ready_0,
  output          up_tx_rst_done_0,
  output  [ 1:0]  up_tx_bufstatus_0,
  input           up_tx_prbsforceerr_0,
  input   [ 3:0]  up_tx_prbssel_0,
  input           up_tx_lpm_dfe_n_0,
  input   [ 2:0]  up_tx_rate_0,
  input   [ 1:0]  up_tx_sys_clk_sel_0,
  input   [ 2:0]  up_tx_out_clk_sel_0,
  input   [ 4:0]  up_tx_diffctrl_0,
  input   [ 4:0]  up_tx_postcursor_0,
  input   [ 4:0]  up_tx_precursor_0,
  input           up_tx_enb_0,
  input   [11:0]  up_tx_addr_0,
  input           up_tx_wr_0,
  input   [15:0]  up_tx_wdata_0,
  output  [15:0]  up_tx_rdata_0,
  output          up_tx_ready_0,

  input           cpll_ref_clk_1,
  input           up_cpll_rst_1,

  input                            rx_1_p,
  input                            rx_1_n,
  output                           rx_out_clk_1,
  output                           rx_out_clk_div2_1,
  input                            rx_clk_1,
  input                            rx_clk_2x_1,
  output  [DATA_PATH_WIDTH-1:0]    rx_charisk_1,
  output  [DATA_PATH_WIDTH-1:0]    rx_disperr_1,
  output  [DATA_PATH_WIDTH-1:0]    rx_notintable_1,
  output  [DATA_PATH_WIDTH*8-1:0]  rx_data_1,
  input                            rx_calign_1,
  output  [1:0]                    rx_header_1,
  output                           rx_block_sync_1,

  output                           tx_1_p,
  output                           tx_1_n,
  output                           tx_out_clk_1,
  output                           tx_out_clk_div2_1,
  input                            tx_clk_1,
  input                            tx_clk_2x_1,
  input   [DATA_PATH_WIDTH-1:0]    tx_charisk_1,
  input   [DATA_PATH_WIDTH*8-1:0]  tx_data_1,
  input   [1:0]                    tx_header_1,

  input           up_es_enb_1,
  input   [11:0]  up_es_addr_1,
  input           up_es_wr_1,
  input   [15:0]  up_es_wdata_1,
  output  [15:0]  up_es_rdata_1,
  output          up_es_ready_1,
  input           up_es_reset_1,
  output          up_rx_pll_locked_1,
  input           up_rx_rst_1,
  input           up_rx_user_ready_1,
  output          up_rx_rst_done_1,
  input   [ 3:0]  up_rx_prbssel_1,
  input           up_rx_prbscntreset_1,
  output          up_rx_prbserr_1,
  output          up_rx_prbslocked_1,
  output  [ 1:0]  up_rx_bufstatus_1,
  input           up_rx_bufstatus_rst_1,
  input           up_rx_lpm_dfe_n_1,
  input   [ 2:0]  up_rx_rate_1,
  input   [ 1:0]  up_rx_sys_clk_sel_1,
  input   [ 2:0]  up_rx_out_clk_sel_1,
  input           up_rx_enb_1,
  input   [11:0]  up_rx_addr_1,
  input           up_rx_wr_1,
  input   [15:0]  up_rx_wdata_1,
  output  [15:0]  up_rx_rdata_1,
  output          up_rx_ready_1,
  output          up_tx_pll_locked_1,
  input           up_tx_rst_1,
  input           up_tx_user_ready_1,
  output          up_tx_rst_done_1,
  output  [ 1:0]  up_tx_bufstatus_1,
  input           up_tx_prbsforceerr_1,
  input   [ 3:0]  up_tx_prbssel_1,
  input           up_tx_lpm_dfe_n_1,
  input   [ 2:0]  up_tx_rate_1,
  input   [ 1:0]  up_tx_sys_clk_sel_1,
  input   [ 2:0]  up_tx_out_clk_sel_1,
  input   [ 4:0]  up_tx_diffctrl_1,
  input   [ 4:0]  up_tx_postcursor_1,
  input   [ 4:0]  up_tx_precursor_1,
  input           up_tx_enb_1,
  input   [11:0]  up_tx_addr_1,
  input           up_tx_wr_1,
  input   [15:0]  up_tx_wdata_1,
  output  [15:0]  up_tx_rdata_1,
  output          up_tx_ready_1,

  input           cpll_ref_clk_2,
  input           up_cpll_rst_2,

  input                            rx_2_p,
  input                            rx_2_n,
  output                           rx_out_clk_2,
  output                           rx_out_clk_div2_2,
  input                            rx_clk_2,
  input                            rx_clk_2x_2,
  output  [DATA_PATH_WIDTH-1:0]    rx_charisk_2,
  output  [DATA_PATH_WIDTH-1:0]    rx_disperr_2,
  output  [DATA_PATH_WIDTH-1:0]    rx_notintable_2,
  output  [DATA_PATH_WIDTH*8-1:0]  rx_data_2,
  input                            rx_calign_2,
  output  [1:0]                    rx_header_2,
  output                           rx_block_sync_2,

  output                           tx_2_p,
  output                           tx_2_n,
  output                           tx_out_clk_2,
  output                           tx_out_clk_div2_2,
  input                            tx_clk_2,
  input                            tx_clk_2x_2,
  input   [DATA_PATH_WIDTH-1:0]    tx_charisk_2,
  input   [DATA_PATH_WIDTH*8-1:0]  tx_data_2,
  input   [1:0]                    tx_header_2,

  input           up_es_enb_2,
  input   [11:0]  up_es_addr_2,
  input           up_es_wr_2,
  input   [15:0]  up_es_wdata_2,
  output  [15:0]  up_es_rdata_2,
  output          up_es_ready_2,
  input           up_es_reset_2,
  output          up_rx_pll_locked_2,
  input           up_rx_rst_2,
  input           up_rx_user_ready_2,
  output          up_rx_rst_done_2,
  input   [ 3:0]  up_rx_prbssel_2,
  input           up_rx_prbscntreset_2,
  output          up_rx_prbserr_2,
  output          up_rx_prbslocked_2,
  output  [ 1:0]  up_rx_bufstatus_2,
  input           up_rx_bufstatus_rst_2,
  input           up_rx_lpm_dfe_n_2,
  input   [ 2:0]  up_rx_rate_2,
  input   [ 1:0]  up_rx_sys_clk_sel_2,
  input   [ 2:0]  up_rx_out_clk_sel_2,
  input           up_rx_enb_2,
  input   [11:0]  up_rx_addr_2,
  input           up_rx_wr_2,
  input   [15:0]  up_rx_wdata_2,
  output  [15:0]  up_rx_rdata_2,
  output          up_rx_ready_2,
  output          up_tx_pll_locked_2,
  input           up_tx_rst_2,
  input           up_tx_user_ready_2,
  output          up_tx_rst_done_2,
  output  [ 1:0]  up_tx_bufstatus_2,
  input           up_tx_prbsforceerr_2,
  input   [ 3:0]  up_tx_prbssel_2,
  input           up_tx_lpm_dfe_n_2,
  input   [ 2:0]  up_tx_rate_2,
  input   [ 1:0]  up_tx_sys_clk_sel_2,
  input   [ 2:0]  up_tx_out_clk_sel_2,
  input   [ 4:0]  up_tx_diffctrl_2,
  input   [ 4:0]  up_tx_postcursor_2,
  input   [ 4:0]  up_tx_precursor_2,
  input           up_tx_enb_2,
  input   [11:0]  up_tx_addr_2,
  input           up_tx_wr_2,
  input   [15:0]  up_tx_wdata_2,
  output  [15:0]  up_tx_rdata_2,
  output          up_tx_ready_2,

  input           cpll_ref_clk_3,
  input           up_cpll_rst_3,

  input                            rx_3_p,
  input                            rx_3_n,
  output                           rx_out_clk_3,
  output                           rx_out_clk_div2_3,
  input                            rx_clk_3,
  input                            rx_clk_2x_3,
  output  [DATA_PATH_WIDTH-1:0]    rx_charisk_3,
  output  [DATA_PATH_WIDTH-1:0]    rx_disperr_3,
  output  [DATA_PATH_WIDTH-1:0]    rx_notintable_3,
  output  [DATA_PATH_WIDTH*8-1:0]  rx_data_3,
  input                            rx_calign_3,
  output  [1:0]                    rx_header_3,
  output                           rx_block_sync_3,

  output                           tx_3_p,
  output                           tx_3_n,
  output                           tx_out_clk_3,
  output                           tx_out_clk_div2_3,
  input                            tx_clk_3,
  input                            tx_clk_2x_3,
  input   [DATA_PATH_WIDTH-1:0]    tx_charisk_3,
  input   [DATA_PATH_WIDTH*8-1:0]  tx_data_3,
  input   [1:0]                    tx_header_3,

  input           up_es_enb_3,
  input   [11:0]  up_es_addr_3,
  input           up_es_wr_3,
  input   [15:0]  up_es_wdata_3,
  output  [15:0]  up_es_rdata_3,
  output          up_es_ready_3,
  input           up_es_reset_3,
  output          up_rx_pll_locked_3,
  input           up_rx_rst_3,
  input           up_rx_user_ready_3,
  output          up_rx_rst_done_3,
  input   [ 3:0]  up_rx_prbssel_3,
  input           up_rx_prbscntreset_3,
  output          up_rx_prbserr_3,
  output          up_rx_prbslocked_3,
  output  [ 1:0]  up_rx_bufstatus_3,
  input           up_rx_bufstatus_rst_3,
  input           up_rx_lpm_dfe_n_3,
  input   [ 2:0]  up_rx_rate_3,
  input   [ 1:0]  up_rx_sys_clk_sel_3,
  input   [ 2:0]  up_rx_out_clk_sel_3,
  input           up_rx_enb_3,
  input   [11:0]  up_rx_addr_3,
  input           up_rx_wr_3,
  input   [15:0]  up_rx_wdata_3,
  output  [15:0]  up_rx_rdata_3,
  output          up_rx_ready_3,
  output          up_tx_pll_locked_3,
  input           up_tx_rst_3,
  input           up_tx_user_ready_3,
  output          up_tx_rst_done_3,
  output  [ 1:0]  up_tx_bufstatus_3,
  input           up_tx_prbsforceerr_3,
  input   [ 3:0]  up_tx_prbssel_3,
  input           up_tx_lpm_dfe_n_3,
  input   [ 2:0]  up_tx_rate_3,
  input   [ 1:0]  up_tx_sys_clk_sel_3,
  input   [ 2:0]  up_tx_out_clk_sel_3,
  input   [ 4:0]  up_tx_diffctrl_3,
  input   [ 4:0]  up_tx_postcursor_3,
  input   [ 4:0]  up_tx_precursor_3,
  input           up_tx_enb_3,
  input   [11:0]  up_tx_addr_3,
  input           up_tx_wr_3,
  input   [15:0]  up_tx_wdata_3,
  output  [15:0]  up_tx_rdata_3,
  output          up_tx_ready_3,

  input           qpll_ref_clk_4,
  input           up_qpll_rst_4,
  input           cpll_ref_clk_4,
  input           up_cpll_rst_4,

  input                            rx_4_p,
  input                            rx_4_n,
  output                           rx_out_clk_4,
  output                           rx_out_clk_div2_4,
  input                            rx_clk_4,
  input                            rx_clk_2x_4,
  output  [DATA_PATH_WIDTH-1:0]    rx_charisk_4,
  output  [DATA_PATH_WIDTH-1:0]    rx_disperr_4,
  output  [DATA_PATH_WIDTH-1:0]    rx_notintable_4,
  output  [DATA_PATH_WIDTH*8-1:0]  rx_data_4,
  input                            rx_calign_4,
  output  [1:0]                    rx_header_4,
  output                           rx_block_sync_4,

  output                           tx_4_p,
  output                           tx_4_n,
  output                           tx_out_clk_4,
  output                           tx_out_clk_div2_4,
  input                            tx_clk_4,
  input                            tx_clk_2x_4,
  input   [DATA_PATH_WIDTH-1:0]    tx_charisk_4,
  input   [DATA_PATH_WIDTH*8-1:0]  tx_data_4,
  input   [1:0]                    tx_header_4,

  input           up_cm_enb_4,
  input   [11:0]  up_cm_addr_4,
  input           up_cm_wr_4,
  input   [15:0]  up_cm_wdata_4,
  output  [15:0]  up_cm_rdata_4,
  output          up_cm_ready_4,
  input           up_es_enb_4,
  input   [11:0]  up_es_addr_4,
  input           up_es_wr_4,
  input   [15:0]  up_es_wdata_4,
  output  [15:0]  up_es_rdata_4,
  output          up_es_ready_4,
  input           up_es_reset_4,
  output          up_rx_pll_locked_4,
  input           up_rx_rst_4,
  input           up_rx_user_ready_4,
  output          up_rx_rst_done_4,
  input   [ 3:0]  up_rx_prbssel_4,
  input           up_rx_prbscntreset_4,
  output          up_rx_prbserr_4,
  output          up_rx_prbslocked_4,
  output  [ 1:0]  up_rx_bufstatus_4,
  input           up_rx_bufstatus_rst_4,
  input           up_rx_lpm_dfe_n_4,
  input   [ 2:0]  up_rx_rate_4,
  input   [ 1:0]  up_rx_sys_clk_sel_4,
  input   [ 2:0]  up_rx_out_clk_sel_4,
  input           up_rx_enb_4,
  input   [11:0]  up_rx_addr_4,
  input           up_rx_wr_4,
  input   [15:0]  up_rx_wdata_4,
  output  [15:0]  up_rx_rdata_4,
  output          up_rx_ready_4,
  output          up_tx_pll_locked_4,
  input           up_tx_rst_4,
  input           up_tx_user_ready_4,
  output          up_tx_rst_done_4,
  output  [ 1:0]  up_tx_bufstatus_4,
  input           up_tx_prbsforceerr_4,
  input   [ 3:0]  up_tx_prbssel_4,
  input           up_tx_lpm_dfe_n_4,
  input   [ 2:0]  up_tx_rate_4,
  input   [ 1:0]  up_tx_sys_clk_sel_4,
  input   [ 2:0]  up_tx_out_clk_sel_4,
  input   [ 4:0]  up_tx_diffctrl_4,
  input   [ 4:0]  up_tx_postcursor_4,
  input   [ 4:0]  up_tx_precursor_4,
  input           up_tx_enb_4,
  input   [11:0]  up_tx_addr_4,
  input           up_tx_wr_4,
  input   [15:0]  up_tx_wdata_4,
  output  [15:0]  up_tx_rdata_4,
  output          up_tx_ready_4,

  input           cpll_ref_clk_5,
  input           up_cpll_rst_5,

  input                            rx_5_p,
  input                            rx_5_n,
  output                           rx_out_clk_5,
  output                           rx_out_clk_div2_5,
  input                            rx_clk_5,
  input                            rx_clk_2x_5,
  output  [DATA_PATH_WIDTH-1:0]    rx_charisk_5,
  output  [DATA_PATH_WIDTH-1:0]    rx_disperr_5,
  output  [DATA_PATH_WIDTH-1:0]    rx_notintable_5,
  output  [DATA_PATH_WIDTH*8-1:0]  rx_data_5,
  input                            rx_calign_5,
  output  [1:0]                    rx_header_5,
  output                           rx_block_sync_5,

  output                           tx_5_p,
  output                           tx_5_n,
  output                           tx_out_clk_5,
  output                           tx_out_clk_div2_5,
  input                            tx_clk_5,
  input                            tx_clk_2x_5,
  input   [DATA_PATH_WIDTH-1:0]    tx_charisk_5,
  input   [DATA_PATH_WIDTH*8-1:0]  tx_data_5,
  input   [1:0]                    tx_header_5,

  input           up_es_enb_5,
  input   [11:0]  up_es_addr_5,
  input           up_es_wr_5,
  input   [15:0]  up_es_wdata_5,
  output  [15:0]  up_es_rdata_5,
  output          up_es_ready_5,
  input           up_es_reset_5,
  output          up_rx_pll_locked_5,
  input           up_rx_rst_5,
  input           up_rx_user_ready_5,
  output          up_rx_rst_done_5,
  input   [ 3:0]  up_rx_prbssel_5,
  input           up_rx_prbscntreset_5,
  output          up_rx_prbserr_5,
  output          up_rx_prbslocked_5,
  output  [ 1:0]  up_rx_bufstatus_5,
  input           up_rx_bufstatus_rst_5,
  input           up_rx_lpm_dfe_n_5,
  input   [ 2:0]  up_rx_rate_5,
  input   [ 1:0]  up_rx_sys_clk_sel_5,
  input   [ 2:0]  up_rx_out_clk_sel_5,
  input           up_rx_enb_5,
  input   [11:0]  up_rx_addr_5,
  input           up_rx_wr_5,
  input   [15:0]  up_rx_wdata_5,
  output  [15:0]  up_rx_rdata_5,
  output          up_rx_ready_5,
  output          up_tx_pll_locked_5,
  input           up_tx_rst_5,
  input           up_tx_user_ready_5,
  output          up_tx_rst_done_5,
  output  [ 1:0]  up_tx_bufstatus_5,
  input           up_tx_prbsforceerr_5,
  input   [ 3:0]  up_tx_prbssel_5,
  input           up_tx_lpm_dfe_n_5,
  input   [ 2:0]  up_tx_rate_5,
  input   [ 1:0]  up_tx_sys_clk_sel_5,
  input   [ 2:0]  up_tx_out_clk_sel_5,
  input   [ 4:0]  up_tx_diffctrl_5,
  input   [ 4:0]  up_tx_postcursor_5,
  input   [ 4:0]  up_tx_precursor_5,
  input           up_tx_enb_5,
  input   [11:0]  up_tx_addr_5,
  input           up_tx_wr_5,
  input   [15:0]  up_tx_wdata_5,
  output  [15:0]  up_tx_rdata_5,
  output          up_tx_ready_5,

  input           cpll_ref_clk_6,
  input           up_cpll_rst_6,

  input                            rx_6_p,
  input                            rx_6_n,
  output                           rx_out_clk_6,
  output                           rx_out_clk_div2_6,
  input                            rx_clk_6,
  input                            rx_clk_2x_6,
  output  [DATA_PATH_WIDTH-1:0]    rx_charisk_6,
  output  [DATA_PATH_WIDTH-1:0]    rx_disperr_6,
  output  [DATA_PATH_WIDTH-1:0]    rx_notintable_6,
  output  [DATA_PATH_WIDTH*8-1:0]  rx_data_6,
  input                            rx_calign_6,
  output  [1:0]                    rx_header_6,
  output                           rx_block_sync_6,

  output                           tx_6_p,
  output                           tx_6_n,
  output                           tx_out_clk_6,
  output                           tx_out_clk_div2_6,
  input                            tx_clk_6,
  input                            tx_clk_2x_6,
  input   [DATA_PATH_WIDTH-1:0]    tx_charisk_6,
  input   [DATA_PATH_WIDTH*8-1:0]  tx_data_6,
  input   [1:0]                    tx_header_6,

  input           up_es_enb_6,
  input   [11:0]  up_es_addr_6,
  input           up_es_wr_6,
  input   [15:0]  up_es_wdata_6,
  output  [15:0]  up_es_rdata_6,
  output          up_es_ready_6,
  input           up_es_reset_6,
  output          up_rx_pll_locked_6,
  input           up_rx_rst_6,
  input           up_rx_user_ready_6,
  output          up_rx_rst_done_6,
  input   [ 3:0]  up_rx_prbssel_6,
  input           up_rx_prbscntreset_6,
  output          up_rx_prbserr_6,
  output          up_rx_prbslocked_6,
  output  [ 1:0]  up_rx_bufstatus_6,
  input           up_rx_bufstatus_rst_6,
  input           up_rx_lpm_dfe_n_6,
  input   [ 2:0]  up_rx_rate_6,
  input   [ 1:0]  up_rx_sys_clk_sel_6,
  input   [ 2:0]  up_rx_out_clk_sel_6,
  input           up_rx_enb_6,
  input   [11:0]  up_rx_addr_6,
  input           up_rx_wr_6,
  input   [15:0]  up_rx_wdata_6,
  output  [15:0]  up_rx_rdata_6,
  output          up_rx_ready_6,
  output          up_tx_pll_locked_6,
  input           up_tx_rst_6,
  input           up_tx_user_ready_6,
  output          up_tx_rst_done_6,
  output  [ 1:0]  up_tx_bufstatus_6,
  input           up_tx_prbsforceerr_6,
  input   [ 3:0]  up_tx_prbssel_6,
  input           up_tx_lpm_dfe_n_6,
  input   [ 2:0]  up_tx_rate_6,
  input   [ 1:0]  up_tx_sys_clk_sel_6,
  input   [ 2:0]  up_tx_out_clk_sel_6,
  input   [ 4:0]  up_tx_diffctrl_6,
  input   [ 4:0]  up_tx_postcursor_6,
  input   [ 4:0]  up_tx_precursor_6,
  input           up_tx_enb_6,
  input   [11:0]  up_tx_addr_6,
  input           up_tx_wr_6,
  input   [15:0]  up_tx_wdata_6,
  output  [15:0]  up_tx_rdata_6,
  output          up_tx_ready_6,

  input           cpll_ref_clk_7,
  input           up_cpll_rst_7,

  input                            rx_7_p,
  input                            rx_7_n,
  output                           rx_out_clk_7,
  output                           rx_out_clk_div2_7,
  input                            rx_clk_7,
  input                            rx_clk_2x_7,
  output  [DATA_PATH_WIDTH-1:0]    rx_charisk_7,
  output  [DATA_PATH_WIDTH-1:0]    rx_disperr_7,
  output  [DATA_PATH_WIDTH-1:0]    rx_notintable_7,
  output  [DATA_PATH_WIDTH*8-1:0]  rx_data_7,
  input                            rx_calign_7,
  output  [1:0]                    rx_header_7,
  output                           rx_block_sync_7,

  output                           tx_7_p,
  output                           tx_7_n,
  output                           tx_out_clk_7,
  output                           tx_out_clk_div2_7,
  input                            tx_clk_7,
  input                            tx_clk_2x_7,
  input   [DATA_PATH_WIDTH-1:0]    tx_charisk_7,
  input   [DATA_PATH_WIDTH*8-1:0]  tx_data_7,
  input   [1:0]                    tx_header_7,

  input           up_es_enb_7,
  input   [11:0]  up_es_addr_7,
  input           up_es_wr_7,
  input   [15:0]  up_es_wdata_7,
  output  [15:0]  up_es_rdata_7,
  output          up_es_ready_7,
  input           up_es_reset_7,
  output          up_rx_pll_locked_7,
  input           up_rx_rst_7,
  input           up_rx_user_ready_7,
  output          up_rx_rst_done_7,
  input   [ 3:0]  up_rx_prbssel_7,
  input           up_rx_prbscntreset_7,
  output          up_rx_prbserr_7,
  output          up_rx_prbslocked_7,
  output  [ 1:0]  up_rx_bufstatus_7,
  input           up_rx_bufstatus_rst_7,
  input           up_rx_lpm_dfe_n_7,
  input   [ 2:0]  up_rx_rate_7,
  input   [ 1:0]  up_rx_sys_clk_sel_7,
  input   [ 2:0]  up_rx_out_clk_sel_7,
  input           up_rx_enb_7,
  input   [11:0]  up_rx_addr_7,
  input           up_rx_wr_7,
  input   [15:0]  up_rx_wdata_7,
  output  [15:0]  up_rx_rdata_7,
  output          up_rx_ready_7,
  output          up_tx_pll_locked_7,
  input           up_tx_rst_7,
  input           up_tx_user_ready_7,
  output          up_tx_rst_done_7,
  output  [ 1:0]  up_tx_bufstatus_7,
  input           up_tx_prbsforceerr_7,
  input   [ 3:0]  up_tx_prbssel_7,
  input           up_tx_lpm_dfe_n_7,
  input   [ 2:0]  up_tx_rate_7,
  input   [ 1:0]  up_tx_sys_clk_sel_7,
  input   [ 2:0]  up_tx_out_clk_sel_7,
  input   [ 4:0]  up_tx_diffctrl_7,
  input   [ 4:0]  up_tx_postcursor_7,
  input   [ 4:0]  up_tx_precursor_7,
  input           up_tx_enb_7,
  input   [11:0]  up_tx_addr_7,
  input           up_tx_wr_7,
  input   [15:0]  up_tx_wdata_7,
  output  [15:0]  up_tx_rdata_7,
  output          up_tx_ready_7,

  input           qpll_ref_clk_8,
  input           up_qpll_rst_8,
  input           cpll_ref_clk_8,
  input           up_cpll_rst_8,

  input                            rx_8_p,
  input                            rx_8_n,
  output                           rx_out_clk_8,
  output                           rx_out_clk_div2_8,
  input                            rx_clk_8,
  input                            rx_clk_2x_8,
  output  [DATA_PATH_WIDTH-1:0]    rx_charisk_8,
  output  [DATA_PATH_WIDTH-1:0]    rx_disperr_8,
  output  [DATA_PATH_WIDTH-1:0]    rx_notintable_8,
  output  [DATA_PATH_WIDTH*8-1:0]  rx_data_8,
  input                            rx_calign_8,
  output  [1:0]                    rx_header_8,
  output                           rx_block_sync_8,

  output                           tx_8_p,
  output                           tx_8_n,
  output                           tx_out_clk_8,
  output                           tx_out_clk_div2_8,
  input                            tx_clk_8,
  input                            tx_clk_2x_8,
  input   [DATA_PATH_WIDTH-1:0]    tx_charisk_8,
  input   [DATA_PATH_WIDTH*8-1:0]  tx_data_8,
  input   [1:0]                    tx_header_8,

  input           up_cm_enb_8,
  input   [11:0]  up_cm_addr_8,
  input           up_cm_wr_8,
  input   [15:0]  up_cm_wdata_8,
  output  [15:0]  up_cm_rdata_8,
  output          up_cm_ready_8,
  input           up_es_enb_8,
  input   [11:0]  up_es_addr_8,
  input           up_es_wr_8,
  input   [15:0]  up_es_wdata_8,
  output  [15:0]  up_es_rdata_8,
  output          up_es_ready_8,
  input           up_es_reset_8,
  output          up_rx_pll_locked_8,
  input           up_rx_rst_8,
  input           up_rx_user_ready_8,
  output          up_rx_rst_done_8,
  input   [ 3:0]  up_rx_prbssel_8,
  input           up_rx_prbscntreset_8,
  output          up_rx_prbserr_8,
  output          up_rx_prbslocked_8,
  output  [ 1:0]  up_rx_bufstatus_8,
  input           up_rx_bufstatus_rst_8,
  input           up_rx_lpm_dfe_n_8,
  input   [ 2:0]  up_rx_rate_8,
  input   [ 1:0]  up_rx_sys_clk_sel_8,
  input   [ 2:0]  up_rx_out_clk_sel_8,
  input           up_rx_enb_8,
  input   [11:0]  up_rx_addr_8,
  input           up_rx_wr_8,
  input   [15:0]  up_rx_wdata_8,
  output  [15:0]  up_rx_rdata_8,
  output          up_rx_ready_8,
  output          up_tx_pll_locked_8,
  input           up_tx_rst_8,
  input           up_tx_user_ready_8,
  output          up_tx_rst_done_8,
  output  [ 1:0]  up_tx_bufstatus_8,
  input           up_tx_prbsforceerr_8,
  input   [ 3:0]  up_tx_prbssel_8,
  input           up_tx_lpm_dfe_n_8,
  input   [ 2:0]  up_tx_rate_8,
  input   [ 1:0]  up_tx_sys_clk_sel_8,
  input   [ 2:0]  up_tx_out_clk_sel_8,
  input   [ 4:0]  up_tx_diffctrl_8,
  input   [ 4:0]  up_tx_postcursor_8,
  input   [ 4:0]  up_tx_precursor_8,
  input           up_tx_enb_8,
  input   [11:0]  up_tx_addr_8,
  input           up_tx_wr_8,
  input   [15:0]  up_tx_wdata_8,
  output  [15:0]  up_tx_rdata_8,
  output          up_tx_ready_8,

  input           cpll_ref_clk_9,
  input           up_cpll_rst_9,

  input                            rx_9_p,
  input                            rx_9_n,
  output                           rx_out_clk_9,
  output                           rx_out_clk_div2_9,
  input                            rx_clk_9,
  input                            rx_clk_2x_9,
  output  [DATA_PATH_WIDTH-1:0]    rx_charisk_9,
  output  [DATA_PATH_WIDTH-1:0]    rx_disperr_9,
  output  [DATA_PATH_WIDTH-1:0]    rx_notintable_9,
  output  [DATA_PATH_WIDTH*8-1:0]  rx_data_9,
  input                            rx_calign_9,
  output  [1:0]                    rx_header_9,
  output                           rx_block_sync_9,

  output                           tx_9_p,
  output                           tx_9_n,
  output                           tx_out_clk_9,
  output                           tx_out_clk_div2_9,
  input                            tx_clk_9,
  input                            tx_clk_2x_9,
  input   [DATA_PATH_WIDTH-1:0]    tx_charisk_9,
  input   [DATA_PATH_WIDTH*8-1:0]  tx_data_9,
  input   [1:0]                    tx_header_9,

  input           up_es_enb_9,
  input   [11:0]  up_es_addr_9,
  input           up_es_wr_9,
  input   [15:0]  up_es_wdata_9,
  output  [15:0]  up_es_rdata_9,
  output          up_es_ready_9,
  input           up_es_reset_9,
  output          up_rx_pll_locked_9,
  input           up_rx_rst_9,
  input           up_rx_user_ready_9,
  output          up_rx_rst_done_9,
  input   [ 3:0]  up_rx_prbssel_9,
  input           up_rx_prbscntreset_9,
  output          up_rx_prbserr_9,
  output          up_rx_prbslocked_9,
  output  [ 1:0]  up_rx_bufstatus_9,
  input           up_rx_bufstatus_rst_9,
  input           up_rx_lpm_dfe_n_9,
  input   [ 2:0]  up_rx_rate_9,
  input   [ 1:0]  up_rx_sys_clk_sel_9,
  input   [ 2:0]  up_rx_out_clk_sel_9,
  input           up_rx_enb_9,
  input   [11:0]  up_rx_addr_9,
  input           up_rx_wr_9,
  input   [15:0]  up_rx_wdata_9,
  output  [15:0]  up_rx_rdata_9,
  output          up_rx_ready_9,
  output          up_tx_pll_locked_9,
  input           up_tx_rst_9,
  input           up_tx_user_ready_9,
  output          up_tx_rst_done_9,
  output  [ 1:0]  up_tx_bufstatus_9,
  input           up_tx_prbsforceerr_9,
  input   [ 3:0]  up_tx_prbssel_9,
  input           up_tx_lpm_dfe_n_9,
  input   [ 2:0]  up_tx_rate_9,
  input   [ 1:0]  up_tx_sys_clk_sel_9,
  input   [ 2:0]  up_tx_out_clk_sel_9,
  input   [ 4:0]  up_tx_diffctrl_9,
  input   [ 4:0]  up_tx_postcursor_9,
  input   [ 4:0]  up_tx_precursor_9,
  input           up_tx_enb_9,
  input   [11:0]  up_tx_addr_9,
  input           up_tx_wr_9,
  input   [15:0]  up_tx_wdata_9,
  output  [15:0]  up_tx_rdata_9,
  output          up_tx_ready_9,

  input           cpll_ref_clk_10,
  input           up_cpll_rst_10,

  input                            rx_10_p,
  input                            rx_10_n,
  output                           rx_out_clk_10,
  output                           rx_out_clk_div2_10,
  input                            rx_clk_10,
  input                            rx_clk_2x_10,
  output  [DATA_PATH_WIDTH-1:0]    rx_charisk_10,
  output  [DATA_PATH_WIDTH-1:0]    rx_disperr_10,
  output  [DATA_PATH_WIDTH-1:0]    rx_notintable_10,
  output  [DATA_PATH_WIDTH*8-1:0]  rx_data_10,
  input                            rx_calign_10,
  output  [1:0]                    rx_header_10,
  output                           rx_block_sync_10,

  output                           tx_10_p,
  output                           tx_10_n,
  output                           tx_out_clk_10,
  output                           tx_out_clk_div2_10,
  input                            tx_clk_10,
  input                            tx_clk_2x_10,
  input   [DATA_PATH_WIDTH-1:0]    tx_charisk_10,
  input   [DATA_PATH_WIDTH*8-1:0]  tx_data_10,
  input   [1:0]                    tx_header_10,

  input           up_es_enb_10,
  input   [11:0]  up_es_addr_10,
  input           up_es_wr_10,
  input   [15:0]  up_es_wdata_10,
  output  [15:0]  up_es_rdata_10,
  output          up_es_ready_10,
  input           up_es_reset_10,
  output          up_rx_pll_locked_10,
  input           up_rx_rst_10,
  input           up_rx_user_ready_10,
  output          up_rx_rst_done_10,
  input   [ 3:0]  up_rx_prbssel_10,
  input           up_rx_prbscntreset_10,
  output          up_rx_prbserr_10,
  output          up_rx_prbslocked_10,
  output  [ 1:0]  up_rx_bufstatus_10,
  input           up_rx_bufstatus_rst_10,
  input           up_rx_lpm_dfe_n_10,
  input   [ 2:0]  up_rx_rate_10,
  input   [ 1:0]  up_rx_sys_clk_sel_10,
  input   [ 2:0]  up_rx_out_clk_sel_10,
  input           up_rx_enb_10,
  input   [11:0]  up_rx_addr_10,
  input           up_rx_wr_10,
  input   [15:0]  up_rx_wdata_10,
  output  [15:0]  up_rx_rdata_10,
  output          up_rx_ready_10,
  output          up_tx_pll_locked_10,
  input           up_tx_rst_10,
  input           up_tx_user_ready_10,
  output          up_tx_rst_done_10,
  output  [ 1:0]  up_tx_bufstatus_10,
  input           up_tx_prbsforceerr_10,
  input   [ 3:0]  up_tx_prbssel_10,
  input           up_tx_lpm_dfe_n_10,
  input   [ 2:0]  up_tx_rate_10,
  input   [ 1:0]  up_tx_sys_clk_sel_10,
  input   [ 2:0]  up_tx_out_clk_sel_10,
  input   [ 4:0]  up_tx_diffctrl_10,
  input   [ 4:0]  up_tx_postcursor_10,
  input   [ 4:0]  up_tx_precursor_10,
  input           up_tx_enb_10,
  input   [11:0]  up_tx_addr_10,
  input           up_tx_wr_10,
  input   [15:0]  up_tx_wdata_10,
  output  [15:0]  up_tx_rdata_10,
  output          up_tx_ready_10,

  input           cpll_ref_clk_11,
  input           up_cpll_rst_11,

  input                            rx_11_p,
  input                            rx_11_n,
  output                           rx_out_clk_11,
  output                           rx_out_clk_div2_11,
  input                            rx_clk_11,
  input                            rx_clk_2x_11,
  output  [DATA_PATH_WIDTH-1:0]    rx_charisk_11,
  output  [DATA_PATH_WIDTH-1:0]    rx_disperr_11,
  output  [DATA_PATH_WIDTH-1:0]    rx_notintable_11,
  output  [DATA_PATH_WIDTH*8-1:0]  rx_data_11,
  input                            rx_calign_11,
  output  [1:0]                    rx_header_11,
  output                           rx_block_sync_11,

  output                           tx_11_p,
  output                           tx_11_n,
  output                           tx_out_clk_11,
  output                           tx_out_clk_div2_11,
  input                            tx_clk_11,
  input                            tx_clk_2x_11,
  input   [DATA_PATH_WIDTH-1:0]    tx_charisk_11,
  input   [DATA_PATH_WIDTH*8-1:0]  tx_data_11,
  input   [1:0]                    tx_header_11,

  input           up_es_enb_11,
  input   [11:0]  up_es_addr_11,
  input           up_es_wr_11,
  input   [15:0]  up_es_wdata_11,
  output  [15:0]  up_es_rdata_11,
  output          up_es_ready_11,
  input           up_es_reset_11,
  output          up_rx_pll_locked_11,
  input           up_rx_rst_11,
  input           up_rx_user_ready_11,
  output          up_rx_rst_done_11,
  input   [ 3:0]  up_rx_prbssel_11,
  input           up_rx_prbscntreset_11,
  output          up_rx_prbserr_11,
  output          up_rx_prbslocked_11,
  output  [ 1:0]  up_rx_bufstatus_11,
  input           up_rx_bufstatus_rst_11,
  input           up_rx_lpm_dfe_n_11,
  input   [ 2:0]  up_rx_rate_11,
  input   [ 1:0]  up_rx_sys_clk_sel_11,
  input   [ 2:0]  up_rx_out_clk_sel_11,
  input           up_rx_enb_11,
  input   [11:0]  up_rx_addr_11,
  input           up_rx_wr_11,
  input   [15:0]  up_rx_wdata_11,
  output  [15:0]  up_rx_rdata_11,
  output          up_rx_ready_11,
  output          up_tx_pll_locked_11,
  input           up_tx_rst_11,
  input           up_tx_user_ready_11,
  output          up_tx_rst_done_11,
  output  [ 1:0]  up_tx_bufstatus_11,
  input           up_tx_prbsforceerr_11,
  input   [ 3:0]  up_tx_prbssel_11,
  input           up_tx_lpm_dfe_n_11,
  input   [ 2:0]  up_tx_rate_11,
  input   [ 1:0]  up_tx_sys_clk_sel_11,
  input   [ 2:0]  up_tx_out_clk_sel_11,
  input   [ 4:0]  up_tx_diffctrl_11,
  input   [ 4:0]  up_tx_postcursor_11,
  input   [ 4:0]  up_tx_precursor_11,
  input           up_tx_enb_11,
  input   [11:0]  up_tx_addr_11,
  input           up_tx_wr_11,
  input   [15:0]  up_tx_wdata_11,
  output  [15:0]  up_tx_rdata_11,
  output          up_tx_ready_11,

  input           qpll_ref_clk_12,
  input           up_qpll_rst_12,
  input           cpll_ref_clk_12,
  input           up_cpll_rst_12,

  input                            rx_12_p,
  input                            rx_12_n,
  output                           rx_out_clk_12,
  output                           rx_out_clk_div2_12,
  input                            rx_clk_12,
  input                            rx_clk_2x_12,
  output  [DATA_PATH_WIDTH-1:0]    rx_charisk_12,
  output  [DATA_PATH_WIDTH-1:0]    rx_disperr_12,
  output  [DATA_PATH_WIDTH-1:0]    rx_notintable_12,
  output  [DATA_PATH_WIDTH*8-1:0]  rx_data_12,
  input                            rx_calign_12,
  output  [1:0]                    rx_header_12,
  output                           rx_block_sync_12,

  output                           tx_12_p,
  output                           tx_12_n,
  output                           tx_out_clk_12,
  output                           tx_out_clk_div2_12,
  input                            tx_clk_12,
  input                            tx_clk_2x_12,
  input   [DATA_PATH_WIDTH-1:0]    tx_charisk_12,
  input   [DATA_PATH_WIDTH*8-1:0]  tx_data_12,
  input   [1:0]                    tx_header_12,

  input           up_cm_enb_12,
  input   [11:0]  up_cm_addr_12,
  input           up_cm_wr_12,
  input   [15:0]  up_cm_wdata_12,
  output  [15:0]  up_cm_rdata_12,
  output          up_cm_ready_12,
  input           up_es_enb_12,
  input   [11:0]  up_es_addr_12,
  input           up_es_wr_12,
  input   [15:0]  up_es_wdata_12,
  output  [15:0]  up_es_rdata_12,
  output          up_es_ready_12,
  input           up_es_reset_12,
  output          up_rx_pll_locked_12,
  input           up_rx_rst_12,
  input           up_rx_user_ready_12,
  output          up_rx_rst_done_12,
  input   [ 3:0]  up_rx_prbssel_12,
  input           up_rx_prbscntreset_12,
  output          up_rx_prbserr_12,
  output          up_rx_prbslocked_12,
  output  [ 1:0]  up_rx_bufstatus_12,
  input           up_rx_bufstatus_rst_12,
  input           up_rx_lpm_dfe_n_12,
  input   [ 2:0]  up_rx_rate_12,
  input   [ 1:0]  up_rx_sys_clk_sel_12,
  input   [ 2:0]  up_rx_out_clk_sel_12,
  input           up_rx_enb_12,
  input   [11:0]  up_rx_addr_12,
  input           up_rx_wr_12,
  input   [15:0]  up_rx_wdata_12,
  output  [15:0]  up_rx_rdata_12,
  output          up_rx_ready_12,
  output          up_tx_pll_locked_12,
  input           up_tx_rst_12,
  input           up_tx_user_ready_12,
  output          up_tx_rst_done_12,
  output  [ 1:0]  up_tx_bufstatus_12,
  input           up_tx_prbsforceerr_12,
  input   [ 3:0]  up_tx_prbssel_12,
  input           up_tx_lpm_dfe_n_12,
  input   [ 2:0]  up_tx_rate_12,
  input   [ 1:0]  up_tx_sys_clk_sel_12,
  input   [ 2:0]  up_tx_out_clk_sel_12,
  input   [ 4:0]  up_tx_diffctrl_12,
  input   [ 4:0]  up_tx_postcursor_12,
  input   [ 4:0]  up_tx_precursor_12,
  input           up_tx_enb_12,
  input   [11:0]  up_tx_addr_12,
  input           up_tx_wr_12,
  input   [15:0]  up_tx_wdata_12,
  output  [15:0]  up_tx_rdata_12,
  output          up_tx_ready_12,

  input           cpll_ref_clk_13,
  input           up_cpll_rst_13,

  input                            rx_13_p,
  input                            rx_13_n,
  output                           rx_out_clk_13,
  output                           rx_out_clk_div2_13,
  input                            rx_clk_13,
  input                            rx_clk_2x_13,
  output  [DATA_PATH_WIDTH-1:0]    rx_charisk_13,
  output  [DATA_PATH_WIDTH-1:0]    rx_disperr_13,
  output  [DATA_PATH_WIDTH-1:0]    rx_notintable_13,
  output  [DATA_PATH_WIDTH*8-1:0]  rx_data_13,
  input                            rx_calign_13,
  output  [1:0]                    rx_header_13,
  output                           rx_block_sync_13,

  output                           tx_13_p,
  output                           tx_13_n,
  output                           tx_out_clk_13,
  output                           tx_out_clk_div2_13,
  input                            tx_clk_13,
  input                            tx_clk_2x_13,
  input   [DATA_PATH_WIDTH-1:0]    tx_charisk_13,
  input   [DATA_PATH_WIDTH*8-1:0]  tx_data_13,
  input   [1:0]                    tx_header_13,

  input           up_es_enb_13,
  input   [11:0]  up_es_addr_13,
  input           up_es_wr_13,
  input   [15:0]  up_es_wdata_13,
  output  [15:0]  up_es_rdata_13,
  output          up_es_ready_13,
  input           up_es_reset_13,
  output          up_rx_pll_locked_13,
  input           up_rx_rst_13,
  input           up_rx_user_ready_13,
  output          up_rx_rst_done_13,
  input   [ 3:0]  up_rx_prbssel_13,
  input           up_rx_prbscntreset_13,
  output          up_rx_prbserr_13,
  output          up_rx_prbslocked_13,
  output  [ 1:0]  up_rx_bufstatus_13,
  input           up_rx_bufstatus_rst_13,
  input           up_rx_lpm_dfe_n_13,
  input   [ 2:0]  up_rx_rate_13,
  input   [ 1:0]  up_rx_sys_clk_sel_13,
  input   [ 2:0]  up_rx_out_clk_sel_13,
  input           up_rx_enb_13,
  input   [11:0]  up_rx_addr_13,
  input           up_rx_wr_13,
  input   [15:0]  up_rx_wdata_13,
  output  [15:0]  up_rx_rdata_13,
  output          up_rx_ready_13,
  output          up_tx_pll_locked_13,
  input           up_tx_rst_13,
  input           up_tx_user_ready_13,
  output          up_tx_rst_done_13,
  output  [ 1:0]  up_tx_bufstatus_13,
  input           up_tx_prbsforceerr_13,
  input   [ 3:0]  up_tx_prbssel_13,
  input           up_tx_lpm_dfe_n_13,
  input   [ 2:0]  up_tx_rate_13,
  input   [ 1:0]  up_tx_sys_clk_sel_13,
  input   [ 2:0]  up_tx_out_clk_sel_13,
  input   [ 4:0]  up_tx_diffctrl_13,
  input   [ 4:0]  up_tx_postcursor_13,
  input   [ 4:0]  up_tx_precursor_13,
  input           up_tx_enb_13,
  input   [11:0]  up_tx_addr_13,
  input           up_tx_wr_13,
  input   [15:0]  up_tx_wdata_13,
  output  [15:0]  up_tx_rdata_13,
  output          up_tx_ready_13,

  input           cpll_ref_clk_14,
  input           up_cpll_rst_14,

  input                            rx_14_p,
  input                            rx_14_n,
  output                           rx_out_clk_14,
  output                           rx_out_clk_div2_14,
  input                            rx_clk_14,
  input                            rx_clk_2x_14,
  output  [DATA_PATH_WIDTH-1:0]    rx_charisk_14,
  output  [DATA_PATH_WIDTH-1:0]    rx_disperr_14,
  output  [DATA_PATH_WIDTH-1:0]    rx_notintable_14,
  output  [DATA_PATH_WIDTH*8-1:0]  rx_data_14,
  input                            rx_calign_14,
  output  [1:0]                    rx_header_14,
  output                           rx_block_sync_14,

  output                           tx_14_p,
  output                           tx_14_n,
  output                           tx_out_clk_14,
  output                           tx_out_clk_div2_14,
  input                            tx_clk_14,
  input                            tx_clk_2x_14,
  input   [DATA_PATH_WIDTH-1:0]    tx_charisk_14,
  input   [DATA_PATH_WIDTH*8-1:0]  tx_data_14,
  input   [1:0]                    tx_header_14,

  input           up_es_enb_14,
  input   [11:0]  up_es_addr_14,
  input           up_es_wr_14,
  input   [15:0]  up_es_wdata_14,
  output  [15:0]  up_es_rdata_14,
  output          up_es_ready_14,
  input           up_es_reset_14,
  output          up_rx_pll_locked_14,
  input           up_rx_rst_14,
  input           up_rx_user_ready_14,
  output          up_rx_rst_done_14,
  input   [ 3:0]  up_rx_prbssel_14,
  input           up_rx_prbscntreset_14,
  output          up_rx_prbserr_14,
  output          up_rx_prbslocked_14,
  output  [ 1:0]  up_rx_bufstatus_14,
  input           up_rx_bufstatus_rst_14,
  input           up_rx_lpm_dfe_n_14,
  input   [ 2:0]  up_rx_rate_14,
  input   [ 1:0]  up_rx_sys_clk_sel_14,
  input   [ 2:0]  up_rx_out_clk_sel_14,
  input           up_rx_enb_14,
  input   [11:0]  up_rx_addr_14,
  input           up_rx_wr_14,
  input   [15:0]  up_rx_wdata_14,
  output  [15:0]  up_rx_rdata_14,
  output          up_rx_ready_14,
  output          up_tx_pll_locked_14,
  input           up_tx_rst_14,
  input           up_tx_user_ready_14,
  output          up_tx_rst_done_14,
  output  [ 1:0]  up_tx_bufstatus_14,
  input           up_tx_prbsforceerr_14,
  input   [ 3:0]  up_tx_prbssel_14,
  input           up_tx_lpm_dfe_n_14,
  input   [ 2:0]  up_tx_rate_14,
  input   [ 1:0]  up_tx_sys_clk_sel_14,
  input   [ 2:0]  up_tx_out_clk_sel_14,
  input   [ 4:0]  up_tx_diffctrl_14,
  input   [ 4:0]  up_tx_postcursor_14,
  input   [ 4:0]  up_tx_precursor_14,
  input           up_tx_enb_14,
  input   [11:0]  up_tx_addr_14,
  input           up_tx_wr_14,
  input   [15:0]  up_tx_wdata_14,
  output  [15:0]  up_tx_rdata_14,
  output          up_tx_ready_14,

  input           cpll_ref_clk_15,
  input           up_cpll_rst_15,

  input                            rx_15_p,
  input                            rx_15_n,
  output                           rx_out_clk_15,
  output                           rx_out_clk_div2_15,
  input                            rx_clk_15,
  input                            rx_clk_2x_15,
  output  [DATA_PATH_WIDTH-1:0]    rx_charisk_15,
  output  [DATA_PATH_WIDTH-1:0]    rx_disperr_15,
  output  [DATA_PATH_WIDTH-1:0]    rx_notintable_15,
  output  [DATA_PATH_WIDTH*8-1:0]  rx_data_15,
  input                            rx_calign_15,
  output  [1:0]                    rx_header_15,
  output                           rx_block_sync_15,

  output                           tx_15_p,
  output                           tx_15_n,
  output                           tx_out_clk_15,
  output                           tx_out_clk_div2_15,
  input                            tx_clk_15,
  input                            tx_clk_2x_15,
  input   [DATA_PATH_WIDTH-1:0]    tx_charisk_15,
  input   [DATA_PATH_WIDTH*8-1:0]  tx_data_15,
  input   [1:0]                    tx_header_15,

  input           up_es_enb_15,
  input   [11:0]  up_es_addr_15,
  input           up_es_wr_15,
  input   [15:0]  up_es_wdata_15,
  output  [15:0]  up_es_rdata_15,
  output          up_es_ready_15,
  input           up_es_reset_15,
  output          up_rx_pll_locked_15,
  input           up_rx_rst_15,
  input           up_rx_user_ready_15,
  output          up_rx_rst_done_15,
  input   [ 3:0]  up_rx_prbssel_15,
  input           up_rx_prbscntreset_15,
  output          up_rx_prbserr_15,
  output          up_rx_prbslocked_15,
  output  [ 1:0]  up_rx_bufstatus_15,
  input           up_rx_bufstatus_rst_15,
  input           up_rx_lpm_dfe_n_15,
  input   [ 2:0]  up_rx_rate_15,
  input   [ 1:0]  up_rx_sys_clk_sel_15,
  input   [ 2:0]  up_rx_out_clk_sel_15,
  input           up_rx_enb_15,
  input   [11:0]  up_rx_addr_15,
  input           up_rx_wr_15,
  input   [15:0]  up_rx_wdata_15,
  output  [15:0]  up_rx_rdata_15,
  output          up_rx_ready_15,
  output          up_tx_pll_locked_15,
  input           up_tx_rst_15,
  input           up_tx_user_ready_15,
  output          up_tx_rst_done_15,
  output  [ 1:0]  up_tx_bufstatus_15,
  input           up_tx_prbsforceerr_15,
  input   [ 3:0]  up_tx_prbssel_15,
  input           up_tx_lpm_dfe_n_15,
  input   [ 2:0]  up_tx_rate_15,
  input   [ 1:0]  up_tx_sys_clk_sel_15,
  input   [ 2:0]  up_tx_out_clk_sel_15,
  input   [ 4:0]  up_tx_diffctrl_15,
  input   [ 4:0]  up_tx_postcursor_15,
  input   [ 4:0]  up_tx_precursor_15,
  input           up_tx_enb_15,
  input   [11:0]  up_tx_addr_15,
  input           up_tx_wr_15,
  input   [15:0]  up_tx_wdata_15,
  output  [15:0]  up_tx_rdata_15,
  output          up_tx_ready_15,

  input           qpll_ref_clk_16,
  input           up_qpll_rst_16,
  input           cpll_ref_clk_16,
  input           up_cpll_rst_16,

  input                            rx_16_p,
  input                            rx_16_n,
  output                           rx_out_clk_16,
  output                           rx_out_clk_div2_16,
  input                            rx_clk_16,
  input                            rx_clk_2x_16,
  output  [DATA_PATH_WIDTH-1:0]    rx_charisk_16,
  output  [DATA_PATH_WIDTH-1:0]    rx_disperr_16,
  output  [DATA_PATH_WIDTH-1:0]    rx_notintable_16,
  output  [DATA_PATH_WIDTH*8-1:0]  rx_data_16,
  input                            rx_calign_16,
  output  [1:0]                    rx_header_16,
  output                           rx_block_sync_16,

  output                           tx_16_p,
  output                           tx_16_n,
  output                           tx_out_clk_16,
  output                           tx_out_clk_div2_16,
  input                            tx_clk_16,
  input                            tx_clk_2x_16,
  input   [DATA_PATH_WIDTH-1:0]    tx_charisk_16,
  input   [DATA_PATH_WIDTH*8-1:0]  tx_data_16,
  input   [1:0]                    tx_header_16,

  input           up_cm_enb_16,
  input   [11:0]  up_cm_addr_16,
  input           up_cm_wr_16,
  input   [15:0]  up_cm_wdata_16,
  output  [15:0]  up_cm_rdata_16,
  output          up_cm_ready_16,
  input           up_es_enb_16,
  input   [11:0]  up_es_addr_16,
  input           up_es_wr_16,
  input   [15:0]  up_es_wdata_16,
  output  [15:0]  up_es_rdata_16,
  output          up_es_ready_16,
  input           up_es_reset_16,
  output          up_rx_pll_locked_16,
  input           up_rx_rst_16,
  input           up_rx_user_ready_16,
  output          up_rx_rst_done_16,
  input   [ 3:0]  up_rx_prbssel_16,
  input           up_rx_prbscntreset_16,
  output          up_rx_prbserr_16,
  output          up_rx_prbslocked_16,
  output  [ 1:0]  up_rx_bufstatus_16,
  input           up_rx_bufstatus_rst_16,
  input           up_rx_lpm_dfe_n_16,
  input   [ 2:0]  up_rx_rate_16,
  input   [ 1:0]  up_rx_sys_clk_sel_16,
  input   [ 2:0]  up_rx_out_clk_sel_16,
  input           up_rx_enb_16,
  input   [11:0]  up_rx_addr_16,
  input           up_rx_wr_16,
  input   [15:0]  up_rx_wdata_16,
  output  [15:0]  up_rx_rdata_16,
  output          up_rx_ready_16,
  output          up_tx_pll_locked_16,
  input           up_tx_rst_16,
  input           up_tx_user_ready_16,
  output          up_tx_rst_done_16,
  output  [ 1:0]  up_tx_bufstatus_16,
  input           up_tx_prbsforceerr_16,
  input   [ 3:0]  up_tx_prbssel_16,
  input           up_tx_lpm_dfe_n_16,
  input   [ 2:0]  up_tx_rate_16,
  input   [ 1:0]  up_tx_sys_clk_sel_16,
  input   [ 2:0]  up_tx_out_clk_sel_16,
  input   [ 4:0]  up_tx_diffctrl_16,
  input   [ 4:0]  up_tx_postcursor_16,
  input   [ 4:0]  up_tx_precursor_16,
  input           up_tx_enb_16,
  input   [11:0]  up_tx_addr_16,
  input           up_tx_wr_16,
  input   [15:0]  up_tx_wdata_16,
  output  [15:0]  up_tx_rdata_16,
  output          up_tx_ready_16,

  input           cpll_ref_clk_17,
  input           up_cpll_rst_17,

  input                            rx_17_p,
  input                            rx_17_n,
  output                           rx_out_clk_17,
  output                           rx_out_clk_div2_17,
  input                            rx_clk_17,
  input                            rx_clk_2x_17,
  output  [DATA_PATH_WIDTH-1:0]    rx_charisk_17,
  output  [DATA_PATH_WIDTH-1:0]    rx_disperr_17,
  output  [DATA_PATH_WIDTH-1:0]    rx_notintable_17,
  output  [DATA_PATH_WIDTH*8-1:0]  rx_data_17,
  input                            rx_calign_17,
  output  [1:0]                    rx_header_17,
  output                           rx_block_sync_17,

  output                           tx_17_p,
  output                           tx_17_n,
  output                           tx_out_clk_17,
  output                           tx_out_clk_div2_17,
  input                            tx_clk_17,
  input                            tx_clk_2x_17,
  input   [DATA_PATH_WIDTH-1:0]    tx_charisk_17,
  input   [DATA_PATH_WIDTH*8-1:0]  tx_data_17,
  input   [1:0]                    tx_header_17,

  input           up_es_enb_17,
  input   [11:0]  up_es_addr_17,
  input           up_es_wr_17,
  input   [15:0]  up_es_wdata_17,
  output  [15:0]  up_es_rdata_17,
  output          up_es_ready_17,
  input           up_es_reset_17,
  output          up_rx_pll_locked_17,
  input           up_rx_rst_17,
  input           up_rx_user_ready_17,
  output          up_rx_rst_done_17,
  input   [ 3:0]  up_rx_prbssel_17,
  input           up_rx_prbscntreset_17,
  output          up_rx_prbserr_17,
  output          up_rx_prbslocked_17,
  output  [ 1:0]  up_rx_bufstatus_17,
  input           up_rx_bufstatus_rst_17,
  input           up_rx_lpm_dfe_n_17,
  input   [ 2:0]  up_rx_rate_17,
  input   [ 1:0]  up_rx_sys_clk_sel_17,
  input   [ 2:0]  up_rx_out_clk_sel_17,
  input           up_rx_enb_17,
  input   [11:0]  up_rx_addr_17,
  input           up_rx_wr_17,
  input   [15:0]  up_rx_wdata_17,
  output  [15:0]  up_rx_rdata_17,
  output          up_rx_ready_17,
  output          up_tx_pll_locked_17,
  input           up_tx_rst_17,
  input           up_tx_user_ready_17,
  output          up_tx_rst_done_17,
  output  [ 1:0]  up_tx_bufstatus_17,
  input           up_tx_prbsforceerr_17,
  input   [ 3:0]  up_tx_prbssel_17,
  input           up_tx_lpm_dfe_n_17,
  input   [ 2:0]  up_tx_rate_17,
  input   [ 1:0]  up_tx_sys_clk_sel_17,
  input   [ 2:0]  up_tx_out_clk_sel_17,
  input   [ 4:0]  up_tx_diffctrl_17,
  input   [ 4:0]  up_tx_postcursor_17,
  input   [ 4:0]  up_tx_precursor_17,
  input           up_tx_enb_17,
  input   [11:0]  up_tx_addr_17,
  input           up_tx_wr_17,
  input   [15:0]  up_tx_wdata_17,
  output  [15:0]  up_tx_rdata_17,
  output          up_tx_ready_17,

  input           cpll_ref_clk_18,
  input           up_cpll_rst_18,

  input                            rx_18_p,
  input                            rx_18_n,
  output                           rx_out_clk_18,
  output                           rx_out_clk_div2_18,
  input                            rx_clk_18,
  input                            rx_clk_2x_18,
  output  [DATA_PATH_WIDTH-1:0]    rx_charisk_18,
  output  [DATA_PATH_WIDTH-1:0]    rx_disperr_18,
  output  [DATA_PATH_WIDTH-1:0]    rx_notintable_18,
  output  [DATA_PATH_WIDTH*8-1:0]  rx_data_18,
  input                            rx_calign_18,
  output  [1:0]                    rx_header_18,
  output                           rx_block_sync_18,

  output                           tx_18_p,
  output                           tx_18_n,
  output                           tx_out_clk_18,
  output                           tx_out_clk_div2_18,
  input                            tx_clk_18,
  input                            tx_clk_2x_18,
  input   [DATA_PATH_WIDTH-1:0]    tx_charisk_18,
  input   [DATA_PATH_WIDTH*8-1:0]  tx_data_18,
  input   [1:0]                    tx_header_18,

  input           up_es_enb_18,
  input   [11:0]  up_es_addr_18,
  input           up_es_wr_18,
  input   [15:0]  up_es_wdata_18,
  output  [15:0]  up_es_rdata_18,
  output          up_es_ready_18,
  input           up_es_reset_18,
  output          up_rx_pll_locked_18,
  input           up_rx_rst_18,
  input           up_rx_user_ready_18,
  output          up_rx_rst_done_18,
  input   [ 3:0]  up_rx_prbssel_18,
  input           up_rx_prbscntreset_18,
  output          up_rx_prbserr_18,
  output          up_rx_prbslocked_18,
  output  [ 1:0]  up_rx_bufstatus_18,
  input           up_rx_bufstatus_rst_18,
  input           up_rx_lpm_dfe_n_18,
  input   [ 2:0]  up_rx_rate_18,
  input   [ 1:0]  up_rx_sys_clk_sel_18,
  input   [ 2:0]  up_rx_out_clk_sel_18,
  input           up_rx_enb_18,
  input   [11:0]  up_rx_addr_18,
  input           up_rx_wr_18,
  input   [15:0]  up_rx_wdata_18,
  output  [15:0]  up_rx_rdata_18,
  output          up_rx_ready_18,
  output          up_tx_pll_locked_18,
  input           up_tx_rst_18,
  input           up_tx_user_ready_18,
  output          up_tx_rst_done_18,
  output  [ 1:0]  up_tx_bufstatus_18,
  input           up_tx_prbsforceerr_18,
  input   [ 3:0]  up_tx_prbssel_18,
  input           up_tx_lpm_dfe_n_18,
  input   [ 2:0]  up_tx_rate_18,
  input   [ 1:0]  up_tx_sys_clk_sel_18,
  input   [ 2:0]  up_tx_out_clk_sel_18,
  input   [ 4:0]  up_tx_diffctrl_18,
  input   [ 4:0]  up_tx_postcursor_18,
  input   [ 4:0]  up_tx_precursor_18,
  input           up_tx_enb_18,
  input   [11:0]  up_tx_addr_18,
  input           up_tx_wr_18,
  input   [15:0]  up_tx_wdata_18,
  output  [15:0]  up_tx_rdata_18,
  output          up_tx_ready_18,

  input           cpll_ref_clk_19,
  input           up_cpll_rst_19,

  input                            rx_19_p,
  input                            rx_19_n,
  output                           rx_out_clk_19,
  output                           rx_out_clk_div2_19,
  input                            rx_clk_19,
  input                            rx_clk_2x_19,
  output  [DATA_PATH_WIDTH-1:0]    rx_charisk_19,
  output  [DATA_PATH_WIDTH-1:0]    rx_disperr_19,
  output  [DATA_PATH_WIDTH-1:0]    rx_notintable_19,
  output  [DATA_PATH_WIDTH*8-1:0]  rx_data_19,
  input                            rx_calign_19,
  output  [1:0]                    rx_header_19,
  output                           rx_block_sync_19,

  output                           tx_19_p,
  output                           tx_19_n,
  output                           tx_out_clk_19,
  output                           tx_out_clk_div2_19,
  input                            tx_clk_19,
  input                            tx_clk_2x_19,
  input   [DATA_PATH_WIDTH-1:0]    tx_charisk_19,
  input   [DATA_PATH_WIDTH*8-1:0]  tx_data_19,
  input   [1:0]                    tx_header_19,

  input           up_es_enb_19,
  input   [11:0]  up_es_addr_19,
  input           up_es_wr_19,
  input   [15:0]  up_es_wdata_19,
  output  [15:0]  up_es_rdata_19,
  output          up_es_ready_19,
  input           up_es_reset_19,
  output          up_rx_pll_locked_19,
  input           up_rx_rst_19,
  input           up_rx_user_ready_19,
  output          up_rx_rst_done_19,
  input   [ 3:0]  up_rx_prbssel_19,
  input           up_rx_prbscntreset_19,
  output          up_rx_prbserr_19,
  output          up_rx_prbslocked_19,
  output  [ 1:0]  up_rx_bufstatus_19,
  input           up_rx_bufstatus_rst_19,
  input           up_rx_lpm_dfe_n_19,
  input   [ 2:0]  up_rx_rate_19,
  input   [ 1:0]  up_rx_sys_clk_sel_19,
  input   [ 2:0]  up_rx_out_clk_sel_19,
  input           up_rx_enb_19,
  input   [11:0]  up_rx_addr_19,
  input           up_rx_wr_19,
  input   [15:0]  up_rx_wdata_19,
  output  [15:0]  up_rx_rdata_19,
  output          up_rx_ready_19,
  output          up_tx_pll_locked_19,
  input           up_tx_rst_19,
  input           up_tx_user_ready_19,
  output          up_tx_rst_done_19,
  output  [ 1:0]  up_tx_bufstatus_19,
  input           up_tx_prbsforceerr_19,
  input   [ 3:0]  up_tx_prbssel_19,
  input           up_tx_lpm_dfe_n_19,
  input   [ 2:0]  up_tx_rate_19,
  input   [ 1:0]  up_tx_sys_clk_sel_19,
  input   [ 2:0]  up_tx_out_clk_sel_19,
  input   [ 4:0]  up_tx_diffctrl_19,
  input   [ 4:0]  up_tx_postcursor_19,
  input   [ 4:0]  up_tx_precursor_19,
  input           up_tx_enb_19,
  input   [11:0]  up_tx_addr_19,
  input           up_tx_wr_19,
  input   [15:0]  up_tx_wdata_19,
  output  [15:0]  up_tx_rdata_19,
  output          up_tx_ready_19,

  input           qpll_ref_clk_20,
  input           up_qpll_rst_20,
  input           cpll_ref_clk_20,
  input           up_cpll_rst_20,

  input                            rx_20_p,
  input                            rx_20_n,
  output                           rx_out_clk_20,
  output                           rx_out_clk_div2_20,
  input                            rx_clk_20,
  input                            rx_clk_2x_20,
  output  [DATA_PATH_WIDTH-1:0]    rx_charisk_20,
  output  [DATA_PATH_WIDTH-1:0]    rx_disperr_20,
  output  [DATA_PATH_WIDTH-1:0]    rx_notintable_20,
  output  [DATA_PATH_WIDTH*8-1:0]  rx_data_20,
  input                            rx_calign_20,
  output  [1:0]                    rx_header_20,
  output                           rx_block_sync_20,

  output                           tx_20_p,
  output                           tx_20_n,
  output                           tx_out_clk_20,
  output                           tx_out_clk_div2_20,
  input                            tx_clk_20,
  input                            tx_clk_2x_20,
  input   [DATA_PATH_WIDTH-1:0]    tx_charisk_20,
  input   [DATA_PATH_WIDTH*8-1:0]  tx_data_20,
  input   [1:0]                    tx_header_20,

  input           up_cm_enb_20,
  input   [11:0]  up_cm_addr_20,
  input           up_cm_wr_20,
  input   [15:0]  up_cm_wdata_20,
  output  [15:0]  up_cm_rdata_20,
  output          up_cm_ready_20,
  input           up_es_enb_20,
  input   [11:0]  up_es_addr_20,
  input           up_es_wr_20,
  input   [15:0]  up_es_wdata_20,
  output  [15:0]  up_es_rdata_20,
  output          up_es_ready_20,
  input           up_es_reset_20,
  output          up_rx_pll_locked_20,
  input           up_rx_rst_20,
  input           up_rx_user_ready_20,
  output          up_rx_rst_done_20,
  input   [ 3:0]  up_rx_prbssel_20,
  input           up_rx_prbscntreset_20,
  output          up_rx_prbserr_20,
  output          up_rx_prbslocked_20,
  output  [ 1:0]  up_rx_bufstatus_20,
  input           up_rx_bufstatus_rst_20,
  input           up_rx_lpm_dfe_n_20,
  input   [ 2:0]  up_rx_rate_20,
  input   [ 1:0]  up_rx_sys_clk_sel_20,
  input   [ 2:0]  up_rx_out_clk_sel_20,
  input           up_rx_enb_20,
  input   [11:0]  up_rx_addr_20,
  input           up_rx_wr_20,
  input   [15:0]  up_rx_wdata_20,
  output  [15:0]  up_rx_rdata_20,
  output          up_rx_ready_20,
  output          up_tx_pll_locked_20,
  input           up_tx_rst_20,
  input           up_tx_user_ready_20,
  output          up_tx_rst_done_20,
  output  [ 1:0]  up_tx_bufstatus_20,
  input           up_tx_prbsforceerr_20,
  input   [ 3:0]  up_tx_prbssel_20,
  input           up_tx_lpm_dfe_n_20,
  input   [ 2:0]  up_tx_rate_20,
  input   [ 1:0]  up_tx_sys_clk_sel_20,
  input   [ 2:0]  up_tx_out_clk_sel_20,
  input   [ 4:0]  up_tx_diffctrl_20,
  input   [ 4:0]  up_tx_postcursor_20,
  input   [ 4:0]  up_tx_precursor_20,
  input           up_tx_enb_20,
  input   [11:0]  up_tx_addr_20,
  input           up_tx_wr_20,
  input   [15:0]  up_tx_wdata_20,
  output  [15:0]  up_tx_rdata_20,
  output          up_tx_ready_20,

  input           cpll_ref_clk_21,
  input           up_cpll_rst_21,

  input                            rx_21_p,
  input                            rx_21_n,
  output                           rx_out_clk_21,
  output                           rx_out_clk_div2_21,
  input                            rx_clk_21,
  input                            rx_clk_2x_21,
  output  [DATA_PATH_WIDTH-1:0]    rx_charisk_21,
  output  [DATA_PATH_WIDTH-1:0]    rx_disperr_21,
  output  [DATA_PATH_WIDTH-1:0]    rx_notintable_21,
  output  [DATA_PATH_WIDTH*8-1:0]  rx_data_21,
  input                            rx_calign_21,
  output  [1:0]                    rx_header_21,
  output                           rx_block_sync_21,

  output                           tx_21_p,
  output                           tx_21_n,
  output                           tx_out_clk_21,
  output                           tx_out_clk_div2_21,
  input                            tx_clk_21,
  input                            tx_clk_2x_21,
  input   [DATA_PATH_WIDTH-1:0]    tx_charisk_21,
  input   [DATA_PATH_WIDTH*8-1:0]  tx_data_21,
  input   [1:0]                    tx_header_21,

  input           up_es_enb_21,
  input   [11:0]  up_es_addr_21,
  input           up_es_wr_21,
  input   [15:0]  up_es_wdata_21,
  output  [15:0]  up_es_rdata_21,
  output          up_es_ready_21,
  input           up_es_reset_21,
  output          up_rx_pll_locked_21,
  input           up_rx_rst_21,
  input           up_rx_user_ready_21,
  output          up_rx_rst_done_21,
  input   [ 3:0]  up_rx_prbssel_21,
  input           up_rx_prbscntreset_21,
  output          up_rx_prbserr_21,
  output          up_rx_prbslocked_21,
  output  [ 1:0]  up_rx_bufstatus_21,
  input           up_rx_bufstatus_rst_21,
  input           up_rx_lpm_dfe_n_21,
  input   [ 2:0]  up_rx_rate_21,
  input   [ 1:0]  up_rx_sys_clk_sel_21,
  input   [ 2:0]  up_rx_out_clk_sel_21,
  input           up_rx_enb_21,
  input   [11:0]  up_rx_addr_21,
  input           up_rx_wr_21,
  input   [15:0]  up_rx_wdata_21,
  output  [15:0]  up_rx_rdata_21,
  output          up_rx_ready_21,
  output          up_tx_pll_locked_21,
  input           up_tx_rst_21,
  input           up_tx_user_ready_21,
  output          up_tx_rst_done_21,
  output  [ 1:0]  up_tx_bufstatus_21,
  input           up_tx_prbsforceerr_21,
  input   [ 3:0]  up_tx_prbssel_21,
  input           up_tx_lpm_dfe_n_21,
  input   [ 2:0]  up_tx_rate_21,
  input   [ 1:0]  up_tx_sys_clk_sel_21,
  input   [ 2:0]  up_tx_out_clk_sel_21,
  input   [ 4:0]  up_tx_diffctrl_21,
  input   [ 4:0]  up_tx_postcursor_21,
  input   [ 4:0]  up_tx_precursor_21,
  input           up_tx_enb_21,
  input   [11:0]  up_tx_addr_21,
  input           up_tx_wr_21,
  input   [15:0]  up_tx_wdata_21,
  output  [15:0]  up_tx_rdata_21,
  output          up_tx_ready_21,

  input           cpll_ref_clk_22,
  input           up_cpll_rst_22,

  input                            rx_22_p,
  input                            rx_22_n,
  output                           rx_out_clk_22,
  output                           rx_out_clk_div2_22,
  input                            rx_clk_22,
  input                            rx_clk_2x_22,
  output  [DATA_PATH_WIDTH-1:0]    rx_charisk_22,
  output  [DATA_PATH_WIDTH-1:0]    rx_disperr_22,
  output  [DATA_PATH_WIDTH-1:0]    rx_notintable_22,
  output  [DATA_PATH_WIDTH*8-1:0]  rx_data_22,
  input                            rx_calign_22,
  output  [1:0]                    rx_header_22,
  output                           rx_block_sync_22,

  output                           tx_22_p,
  output                           tx_22_n,
  output                           tx_out_clk_22,
  output                           tx_out_clk_div2_22,
  input                            tx_clk_22,
  input                            tx_clk_2x_22,
  input   [DATA_PATH_WIDTH-1:0]    tx_charisk_22,
  input   [DATA_PATH_WIDTH*8-1:0]  tx_data_22,
  input   [1:0]                    tx_header_22,

  input           up_es_enb_22,
  input   [11:0]  up_es_addr_22,
  input           up_es_wr_22,
  input   [15:0]  up_es_wdata_22,
  output  [15:0]  up_es_rdata_22,
  output          up_es_ready_22,
  input           up_es_reset_22,
  output          up_rx_pll_locked_22,
  input           up_rx_rst_22,
  input           up_rx_user_ready_22,
  output          up_rx_rst_done_22,
  input   [ 3:0]  up_rx_prbssel_22,
  input           up_rx_prbscntreset_22,
  output          up_rx_prbserr_22,
  output          up_rx_prbslocked_22,
  output  [ 1:0]  up_rx_bufstatus_22,
  input           up_rx_bufstatus_rst_22,
  input           up_rx_lpm_dfe_n_22,
  input   [ 2:0]  up_rx_rate_22,
  input   [ 1:0]  up_rx_sys_clk_sel_22,
  input   [ 2:0]  up_rx_out_clk_sel_22,
  input           up_rx_enb_22,
  input   [11:0]  up_rx_addr_22,
  input           up_rx_wr_22,
  input   [15:0]  up_rx_wdata_22,
  output  [15:0]  up_rx_rdata_22,
  output          up_rx_ready_22,
  output          up_tx_pll_locked_22,
  input           up_tx_rst_22,
  input           up_tx_user_ready_22,
  output          up_tx_rst_done_22,
  output  [ 1:0]  up_tx_bufstatus_22,
  input           up_tx_prbsforceerr_22,
  input   [ 3:0]  up_tx_prbssel_22,
  input           up_tx_lpm_dfe_n_22,
  input   [ 2:0]  up_tx_rate_22,
  input   [ 1:0]  up_tx_sys_clk_sel_22,
  input   [ 2:0]  up_tx_out_clk_sel_22,
  input   [ 4:0]  up_tx_diffctrl_22,
  input   [ 4:0]  up_tx_postcursor_22,
  input   [ 4:0]  up_tx_precursor_22,
  input           up_tx_enb_22,
  input   [11:0]  up_tx_addr_22,
  input           up_tx_wr_22,
  input   [15:0]  up_tx_wdata_22,
  output  [15:0]  up_tx_rdata_22,
  output          up_tx_ready_22,

  input           cpll_ref_clk_23,
  input           up_cpll_rst_23,

  input                            rx_23_p,
  input                            rx_23_n,
  output                           rx_out_clk_23,
  output                           rx_out_clk_div2_23,
  input                            rx_clk_23,
  input                            rx_clk_2x_23,
  output  [DATA_PATH_WIDTH-1:0]    rx_charisk_23,
  output  [DATA_PATH_WIDTH-1:0]    rx_disperr_23,
  output  [DATA_PATH_WIDTH-1:0]    rx_notintable_23,
  output  [DATA_PATH_WIDTH*8-1:0]  rx_data_23,
  input                            rx_calign_23,
  output  [1:0]                    rx_header_23,
  output                           rx_block_sync_23,

  output                           tx_23_p,
  output                           tx_23_n,
  output                           tx_out_clk_23,
  output                           tx_out_clk_div2_23,
  input                            tx_clk_23,
  input                            tx_clk_2x_23,
  input   [DATA_PATH_WIDTH-1:0]    tx_charisk_23,
  input   [DATA_PATH_WIDTH*8-1:0]  tx_data_23,
  input   [1:0]                    tx_header_23,

  input           up_es_enb_23,
  input   [11:0]  up_es_addr_23,
  input           up_es_wr_23,
  input   [15:0]  up_es_wdata_23,
  output  [15:0]  up_es_rdata_23,
  output          up_es_ready_23,
  input           up_es_reset_23,
  output          up_rx_pll_locked_23,
  input           up_rx_rst_23,
  input           up_rx_user_ready_23,
  output          up_rx_rst_done_23,
  input   [ 3:0]  up_rx_prbssel_23,
  input           up_rx_prbscntreset_23,
  output          up_rx_prbserr_23,
  output          up_rx_prbslocked_23,
  output  [ 1:0]  up_rx_bufstatus_23,
  input           up_rx_bufstatus_rst_23,
  input           up_rx_lpm_dfe_n_23,
  input   [ 2:0]  up_rx_rate_23,
  input   [ 1:0]  up_rx_sys_clk_sel_23,
  input   [ 2:0]  up_rx_out_clk_sel_23,
  input           up_rx_enb_23,
  input   [11:0]  up_rx_addr_23,
  input           up_rx_wr_23,
  input   [15:0]  up_rx_wdata_23,
  output  [15:0]  up_rx_rdata_23,
  output          up_rx_ready_23,
  output          up_tx_pll_locked_23,
  input           up_tx_rst_23,
  input           up_tx_user_ready_23,
  output          up_tx_rst_done_23,
  output  [ 1:0]  up_tx_bufstatus_23,
  input           up_tx_prbsforceerr_23,
  input   [ 3:0]  up_tx_prbssel_23,
  input           up_tx_lpm_dfe_n_23,
  input   [ 2:0]  up_tx_rate_23,
  input   [ 1:0]  up_tx_sys_clk_sel_23,
  input   [ 2:0]  up_tx_out_clk_sel_23,
  input   [ 4:0]  up_tx_diffctrl_23,
  input   [ 4:0]  up_tx_postcursor_23,
  input   [ 4:0]  up_tx_precursor_23,
  input           up_tx_enb_23,
  input   [11:0]  up_tx_addr_23,
  input           up_tx_wr_23,
  input   [15:0]  up_tx_wdata_23,
  output  [15:0]  up_tx_rdata_23,
  output          up_tx_ready_23,

  input           qpll_ref_clk_24,
  input           up_qpll_rst_24,
  input           cpll_ref_clk_24,
  input           up_cpll_rst_24,

  input                            rx_24_p,
  input                            rx_24_n,
  output                           rx_out_clk_24,
  output                           rx_out_clk_div2_24,
  input                            rx_clk_24,
  input                            rx_clk_2x_24,
  output  [DATA_PATH_WIDTH-1:0]    rx_charisk_24,
  output  [DATA_PATH_WIDTH-1:0]    rx_disperr_24,
  output  [DATA_PATH_WIDTH-1:0]    rx_notintable_24,
  output  [DATA_PATH_WIDTH*8-1:0]  rx_data_24,
  input                            rx_calign_24,
  output  [1:0]                    rx_header_24,
  output                           rx_block_sync_24,

  output                           tx_24_p,
  output                           tx_24_n,
  output                           tx_out_clk_24,
  output                           tx_out_clk_div2_24,
  input                            tx_clk_24,
  input                            tx_clk_2x_24,
  input   [DATA_PATH_WIDTH-1:0]    tx_charisk_24,
  input   [DATA_PATH_WIDTH*8-1:0]  tx_data_24,
  input   [1:0]                    tx_header_24,

  input           up_cm_enb_24,
  input   [11:0]  up_cm_addr_24,
  input           up_cm_wr_24,
  input   [15:0]  up_cm_wdata_24,
  output  [15:0]  up_cm_rdata_24,
  output          up_cm_ready_24,
  input           up_es_enb_24,
  input   [11:0]  up_es_addr_24,
  input           up_es_wr_24,
  input   [15:0]  up_es_wdata_24,
  output  [15:0]  up_es_rdata_24,
  output          up_es_ready_24,
  input           up_es_reset_24,
  output          up_rx_pll_locked_24,
  input           up_rx_rst_24,
  input           up_rx_user_ready_24,
  output          up_rx_rst_done_24,
  input   [ 3:0]  up_rx_prbssel_24,
  input           up_rx_prbscntreset_24,
  output          up_rx_prbserr_24,
  output          up_rx_prbslocked_24,
  output  [ 1:0]  up_rx_bufstatus_24,
  input           up_rx_bufstatus_rst_24,
  input           up_rx_lpm_dfe_n_24,
  input   [ 2:0]  up_rx_rate_24,
  input   [ 1:0]  up_rx_sys_clk_sel_24,
  input   [ 2:0]  up_rx_out_clk_sel_24,
  input           up_rx_enb_24,
  input   [11:0]  up_rx_addr_24,
  input           up_rx_wr_24,
  input   [15:0]  up_rx_wdata_24,
  output  [15:0]  up_rx_rdata_24,
  output          up_rx_ready_24,
  output          up_tx_pll_locked_24,
  input           up_tx_rst_24,
  input           up_tx_user_ready_24,
  output          up_tx_rst_done_24,
  output  [ 1:0]  up_tx_bufstatus_24,
  input           up_tx_prbsforceerr_24,
  input   [ 3:0]  up_tx_prbssel_24,
  input           up_tx_lpm_dfe_n_24,
  input   [ 2:0]  up_tx_rate_24,
  input   [ 1:0]  up_tx_sys_clk_sel_24,
  input   [ 2:0]  up_tx_out_clk_sel_24,
  input   [ 4:0]  up_tx_diffctrl_24,
  input   [ 4:0]  up_tx_postcursor_24,
  input   [ 4:0]  up_tx_precursor_24,
  input           up_tx_enb_24,
  input   [11:0]  up_tx_addr_24,
  input           up_tx_wr_24,
  input   [15:0]  up_tx_wdata_24,
  output  [15:0]  up_tx_rdata_24,
  output          up_tx_ready_24,

  input           cpll_ref_clk_25,
  input           up_cpll_rst_25,

  input                            rx_25_p,
  input                            rx_25_n,
  output                           rx_out_clk_25,
  output                           rx_out_clk_div2_25,
  input                            rx_clk_25,
  input                            rx_clk_2x_25,
  output  [DATA_PATH_WIDTH-1:0]    rx_charisk_25,
  output  [DATA_PATH_WIDTH-1:0]    rx_disperr_25,
  output  [DATA_PATH_WIDTH-1:0]    rx_notintable_25,
  output  [DATA_PATH_WIDTH*8-1:0]  rx_data_25,
  input                            rx_calign_25,
  output  [1:0]                    rx_header_25,
  output                           rx_block_sync_25,

  output                           tx_25_p,
  output                           tx_25_n,
  output                           tx_out_clk_25,
  output                           tx_out_clk_div2_25,
  input                            tx_clk_25,
  input                            tx_clk_2x_25,
  input   [DATA_PATH_WIDTH-1:0]    tx_charisk_25,
  input   [DATA_PATH_WIDTH*8-1:0]  tx_data_25,
  input   [1:0]                    tx_header_25,

  input           up_es_enb_25,
  input   [11:0]  up_es_addr_25,
  input           up_es_wr_25,
  input   [15:0]  up_es_wdata_25,
  output  [15:0]  up_es_rdata_25,
  output          up_es_ready_25,
  input           up_es_reset_25,
  output          up_rx_pll_locked_25,
  input           up_rx_rst_25,
  input           up_rx_user_ready_25,
  output          up_rx_rst_done_25,
  input   [ 3:0]  up_rx_prbssel_25,
  input           up_rx_prbscntreset_25,
  output          up_rx_prbserr_25,
  output          up_rx_prbslocked_25,
  output  [ 1:0]  up_rx_bufstatus_25,
  input           up_rx_bufstatus_rst_25,
  input           up_rx_lpm_dfe_n_25,
  input   [ 2:0]  up_rx_rate_25,
  input   [ 1:0]  up_rx_sys_clk_sel_25,
  input   [ 2:0]  up_rx_out_clk_sel_25,
  input           up_rx_enb_25,
  input   [11:0]  up_rx_addr_25,
  input           up_rx_wr_25,
  input   [15:0]  up_rx_wdata_25,
  output  [15:0]  up_rx_rdata_25,
  output          up_rx_ready_25,
  output          up_tx_pll_locked_25,
  input           up_tx_rst_25,
  input           up_tx_user_ready_25,
  output          up_tx_rst_done_25,
  output  [ 1:0]  up_tx_bufstatus_25,
  input           up_tx_prbsforceerr_25,
  input   [ 3:0]  up_tx_prbssel_25,
  input           up_tx_lpm_dfe_n_25,
  input   [ 2:0]  up_tx_rate_25,
  input   [ 1:0]  up_tx_sys_clk_sel_25,
  input   [ 2:0]  up_tx_out_clk_sel_25,
  input   [ 4:0]  up_tx_diffctrl_25,
  input   [ 4:0]  up_tx_postcursor_25,
  input   [ 4:0]  up_tx_precursor_25,
  input           up_tx_enb_25,
  input   [11:0]  up_tx_addr_25,
  input           up_tx_wr_25,
  input   [15:0]  up_tx_wdata_25,
  output  [15:0]  up_tx_rdata_25,
  output          up_tx_ready_25,

  input           cpll_ref_clk_26,
  input           up_cpll_rst_26,

  input                            rx_26_p,
  input                            rx_26_n,
  output                           rx_out_clk_26,
  output                           rx_out_clk_div2_26,
  input                            rx_clk_26,
  input                            rx_clk_2x_26,
  output  [DATA_PATH_WIDTH-1:0]    rx_charisk_26,
  output  [DATA_PATH_WIDTH-1:0]    rx_disperr_26,
  output  [DATA_PATH_WIDTH-1:0]    rx_notintable_26,
  output  [DATA_PATH_WIDTH*8-1:0]  rx_data_26,
  input                            rx_calign_26,
  output  [1:0]                    rx_header_26,
  output                           rx_block_sync_26,

  output                           tx_26_p,
  output                           tx_26_n,
  output                           tx_out_clk_26,
  output                           tx_out_clk_div2_26,
  input                            tx_clk_26,
  input                            tx_clk_2x_26,
  input   [DATA_PATH_WIDTH-1:0]    tx_charisk_26,
  input   [DATA_PATH_WIDTH*8-1:0]  tx_data_26,
  input   [1:0]                    tx_header_26,

  input           up_es_enb_26,
  input   [11:0]  up_es_addr_26,
  input           up_es_wr_26,
  input   [15:0]  up_es_wdata_26,
  output  [15:0]  up_es_rdata_26,
  output          up_es_ready_26,
  input           up_es_reset_26,
  output          up_rx_pll_locked_26,
  input           up_rx_rst_26,
  input           up_rx_user_ready_26,
  output          up_rx_rst_done_26,
  input   [ 3:0]  up_rx_prbssel_26,
  input           up_rx_prbscntreset_26,
  output          up_rx_prbserr_26,
  output          up_rx_prbslocked_26,
  output  [ 1:0]  up_rx_bufstatus_26,
  input           up_rx_bufstatus_rst_26,
  input           up_rx_lpm_dfe_n_26,
  input   [ 2:0]  up_rx_rate_26,
  input   [ 1:0]  up_rx_sys_clk_sel_26,
  input   [ 2:0]  up_rx_out_clk_sel_26,
  input           up_rx_enb_26,
  input   [11:0]  up_rx_addr_26,
  input           up_rx_wr_26,
  input   [15:0]  up_rx_wdata_26,
  output  [15:0]  up_rx_rdata_26,
  output          up_rx_ready_26,
  output          up_tx_pll_locked_26,
  input           up_tx_rst_26,
  input           up_tx_user_ready_26,
  output          up_tx_rst_done_26,
  output  [ 1:0]  up_tx_bufstatus_26,
  input           up_tx_prbsforceerr_26,
  input   [ 3:0]  up_tx_prbssel_26,
  input           up_tx_lpm_dfe_n_26,
  input   [ 2:0]  up_tx_rate_26,
  input   [ 1:0]  up_tx_sys_clk_sel_26,
  input   [ 2:0]  up_tx_out_clk_sel_26,
  input   [ 4:0]  up_tx_diffctrl_26,
  input   [ 4:0]  up_tx_postcursor_26,
  input   [ 4:0]  up_tx_precursor_26,
  input           up_tx_enb_26,
  input   [11:0]  up_tx_addr_26,
  input           up_tx_wr_26,
  input   [15:0]  up_tx_wdata_26,
  output  [15:0]  up_tx_rdata_26,
  output          up_tx_ready_26,

  input           cpll_ref_clk_27,
  input           up_cpll_rst_27,

  input                            rx_27_p,
  input                            rx_27_n,
  output                           rx_out_clk_27,
  output                           rx_out_clk_div2_27,
  input                            rx_clk_27,
  input                            rx_clk_2x_27,
  output  [DATA_PATH_WIDTH-1:0]    rx_charisk_27,
  output  [DATA_PATH_WIDTH-1:0]    rx_disperr_27,
  output  [DATA_PATH_WIDTH-1:0]    rx_notintable_27,
  output  [DATA_PATH_WIDTH*8-1:0]  rx_data_27,
  input                            rx_calign_27,
  output  [1:0]                    rx_header_27,
  output                           rx_block_sync_27,

  output                           tx_27_p,
  output                           tx_27_n,
  output                           tx_out_clk_27,
  output                           tx_out_clk_div2_27,
  input                            tx_clk_27,
  input                            tx_clk_2x_27,
  input   [DATA_PATH_WIDTH-1:0]    tx_charisk_27,
  input   [DATA_PATH_WIDTH*8-1:0]  tx_data_27,
  input   [1:0]                    tx_header_27,

  input           up_es_enb_27,
  input   [11:0]  up_es_addr_27,
  input           up_es_wr_27,
  input   [15:0]  up_es_wdata_27,
  output  [15:0]  up_es_rdata_27,
  output          up_es_ready_27,
  input           up_es_reset_27,
  output          up_rx_pll_locked_27,
  input           up_rx_rst_27,
  input           up_rx_user_ready_27,
  output          up_rx_rst_done_27,
  input   [ 3:0]  up_rx_prbssel_27,
  input           up_rx_prbscntreset_27,
  output          up_rx_prbserr_27,
  output          up_rx_prbslocked_27,
  output  [ 1:0]  up_rx_bufstatus_27,
  input           up_rx_bufstatus_rst_27,
  input           up_rx_lpm_dfe_n_27,
  input   [ 2:0]  up_rx_rate_27,
  input   [ 1:0]  up_rx_sys_clk_sel_27,
  input   [ 2:0]  up_rx_out_clk_sel_27,
  input           up_rx_enb_27,
  input   [11:0]  up_rx_addr_27,
  input           up_rx_wr_27,
  input   [15:0]  up_rx_wdata_27,
  output  [15:0]  up_rx_rdata_27,
  output          up_rx_ready_27,
  output          up_tx_pll_locked_27,
  input           up_tx_rst_27,
  input           up_tx_user_ready_27,
  output          up_tx_rst_done_27,
  output  [ 1:0]  up_tx_bufstatus_27,
  input           up_tx_prbsforceerr_27,
  input   [ 3:0]  up_tx_prbssel_27,
  input           up_tx_lpm_dfe_n_27,
  input   [ 2:0]  up_tx_rate_27,
  input   [ 1:0]  up_tx_sys_clk_sel_27,
  input   [ 2:0]  up_tx_out_clk_sel_27,
  input   [ 4:0]  up_tx_diffctrl_27,
  input   [ 4:0]  up_tx_postcursor_27,
  input   [ 4:0]  up_tx_precursor_27,
  input           up_tx_enb_27,
  input   [11:0]  up_tx_addr_27,
  input           up_tx_wr_27,
  input   [15:0]  up_tx_wdata_27,
  output  [15:0]  up_tx_rdata_27,
  output          up_tx_ready_27,

  input           qpll_ref_clk_28,
  input           up_qpll_rst_28,
  input           cpll_ref_clk_28,
  input           up_cpll_rst_28,

  input                            rx_28_p,
  input                            rx_28_n,
  output                           rx_out_clk_28,
  output                           rx_out_clk_div2_28,
  input                            rx_clk_28,
  input                            rx_clk_2x_28,
  output  [DATA_PATH_WIDTH-1:0]    rx_charisk_28,
  output  [DATA_PATH_WIDTH-1:0]    rx_disperr_28,
  output  [DATA_PATH_WIDTH-1:0]    rx_notintable_28,
  output  [DATA_PATH_WIDTH*8-1:0]  rx_data_28,
  input                            rx_calign_28,
  output  [1:0]                    rx_header_28,
  output                           rx_block_sync_28,

  output                           tx_28_p,
  output                           tx_28_n,
  output                           tx_out_clk_28,
  output                           tx_out_clk_div2_28,
  input                            tx_clk_28,
  input                            tx_clk_2x_28,
  input   [DATA_PATH_WIDTH-1:0]    tx_charisk_28,
  input   [DATA_PATH_WIDTH*8-1:0]  tx_data_28,
  input   [1:0]                    tx_header_28,

  input           up_cm_enb_28,
  input   [11:0]  up_cm_addr_28,
  input           up_cm_wr_28,
  input   [15:0]  up_cm_wdata_28,
  output  [15:0]  up_cm_rdata_28,
  output          up_cm_ready_28,
  input           up_es_enb_28,
  input   [11:0]  up_es_addr_28,
  input           up_es_wr_28,
  input   [15:0]  up_es_wdata_28,
  output  [15:0]  up_es_rdata_28,
  output          up_es_ready_28,
  input           up_es_reset_28,
  output          up_rx_pll_locked_28,
  input           up_rx_rst_28,
  input           up_rx_user_ready_28,
  output          up_rx_rst_done_28,
  input   [ 3:0]  up_rx_prbssel_28,
  input           up_rx_prbscntreset_28,
  output          up_rx_prbserr_28,
  output          up_rx_prbslocked_28,
  output  [ 1:0]  up_rx_bufstatus_28,
  input           up_rx_bufstatus_rst_28,
  input           up_rx_lpm_dfe_n_28,
  input   [ 2:0]  up_rx_rate_28,
  input   [ 1:0]  up_rx_sys_clk_sel_28,
  input   [ 2:0]  up_rx_out_clk_sel_28,
  input           up_rx_enb_28,
  input   [11:0]  up_rx_addr_28,
  input           up_rx_wr_28,
  input   [15:0]  up_rx_wdata_28,
  output  [15:0]  up_rx_rdata_28,
  output          up_rx_ready_28,
  output          up_tx_pll_locked_28,
  input           up_tx_rst_28,
  input           up_tx_user_ready_28,
  output          up_tx_rst_done_28,
  output  [ 1:0]  up_tx_bufstatus_28,
  input           up_tx_prbsforceerr_28,
  input   [ 3:0]  up_tx_prbssel_28,
  input           up_tx_lpm_dfe_n_28,
  input   [ 2:0]  up_tx_rate_28,
  input   [ 1:0]  up_tx_sys_clk_sel_28,
  input   [ 2:0]  up_tx_out_clk_sel_28,
  input   [ 4:0]  up_tx_diffctrl_28,
  input   [ 4:0]  up_tx_postcursor_28,
  input   [ 4:0]  up_tx_precursor_28,
  input           up_tx_enb_28,
  input   [11:0]  up_tx_addr_28,
  input           up_tx_wr_28,
  input   [15:0]  up_tx_wdata_28,
  output  [15:0]  up_tx_rdata_28,
  output          up_tx_ready_28,

  input           cpll_ref_clk_29,
  input           up_cpll_rst_29,

  input                            rx_29_p,
  input                            rx_29_n,
  output                           rx_out_clk_29,
  output                           rx_out_clk_div2_29,
  input                            rx_clk_29,
  input                            rx_clk_2x_29,
  output  [DATA_PATH_WIDTH-1:0]    rx_charisk_29,
  output  [DATA_PATH_WIDTH-1:0]    rx_disperr_29,
  output  [DATA_PATH_WIDTH-1:0]    rx_notintable_29,
  output  [DATA_PATH_WIDTH*8-1:0]  rx_data_29,
  input                            rx_calign_29,
  output  [1:0]                    rx_header_29,
  output                           rx_block_sync_29,

  output                           tx_29_p,
  output                           tx_29_n,
  output                           tx_out_clk_29,
  output                           tx_out_clk_div2_29,
  input                            tx_clk_29,
  input                            tx_clk_2x_29,
  input   [DATA_PATH_WIDTH-1:0]    tx_charisk_29,
  input   [DATA_PATH_WIDTH*8-1:0]  tx_data_29,
  input   [1:0]                    tx_header_29,

  input           up_es_enb_29,
  input   [11:0]  up_es_addr_29,
  input           up_es_wr_29,
  input   [15:0]  up_es_wdata_29,
  output  [15:0]  up_es_rdata_29,
  output          up_es_ready_29,
  input           up_es_reset_29,
  output          up_rx_pll_locked_29,
  input           up_rx_rst_29,
  input           up_rx_user_ready_29,
  output          up_rx_rst_done_29,
  input   [ 3:0]  up_rx_prbssel_29,
  input           up_rx_prbscntreset_29,
  output          up_rx_prbserr_29,
  output          up_rx_prbslocked_29,
  output  [ 1:0]  up_rx_bufstatus_29,
  input           up_rx_bufstatus_rst_29,
  input           up_rx_lpm_dfe_n_29,
  input   [ 2:0]  up_rx_rate_29,
  input   [ 1:0]  up_rx_sys_clk_sel_29,
  input   [ 2:0]  up_rx_out_clk_sel_29,
  input           up_rx_enb_29,
  input   [11:0]  up_rx_addr_29,
  input           up_rx_wr_29,
  input   [15:0]  up_rx_wdata_29,
  output  [15:0]  up_rx_rdata_29,
  output          up_rx_ready_29,
  output          up_tx_pll_locked_29,
  input           up_tx_rst_29,
  input           up_tx_user_ready_29,
  output          up_tx_rst_done_29,
  output  [ 1:0]  up_tx_bufstatus_29,
  input           up_tx_prbsforceerr_29,
  input   [ 3:0]  up_tx_prbssel_29,
  input           up_tx_lpm_dfe_n_29,
  input   [ 2:0]  up_tx_rate_29,
  input   [ 1:0]  up_tx_sys_clk_sel_29,
  input   [ 2:0]  up_tx_out_clk_sel_29,
  input   [ 4:0]  up_tx_diffctrl_29,
  input   [ 4:0]  up_tx_postcursor_29,
  input   [ 4:0]  up_tx_precursor_29,
  input           up_tx_enb_29,
  input   [11:0]  up_tx_addr_29,
  input           up_tx_wr_29,
  input   [15:0]  up_tx_wdata_29,
  output  [15:0]  up_tx_rdata_29,
  output          up_tx_ready_29,

  input           cpll_ref_clk_30,
  input           up_cpll_rst_30,

  input                            rx_30_p,
  input                            rx_30_n,
  output                           rx_out_clk_30,
  output                           rx_out_clk_div2_30,
  input                            rx_clk_30,
  input                            rx_clk_2x_30,
  output  [DATA_PATH_WIDTH-1:0]    rx_charisk_30,
  output  [DATA_PATH_WIDTH-1:0]    rx_disperr_30,
  output  [DATA_PATH_WIDTH-1:0]    rx_notintable_30,
  output  [DATA_PATH_WIDTH*8-1:0]  rx_data_30,
  input                            rx_calign_30,
  output  [1:0]                    rx_header_30,
  output                           rx_block_sync_30,

  output                           tx_30_p,
  output                           tx_30_n,
  output                           tx_out_clk_30,
  output                           tx_out_clk_div2_30,
  input                            tx_clk_30,
  input                            tx_clk_2x_30,
  input   [DATA_PATH_WIDTH-1:0]    tx_charisk_30,
  input   [DATA_PATH_WIDTH*8-1:0]  tx_data_30,
  input   [1:0]                    tx_header_30,

  input           up_es_enb_30,
  input   [11:0]  up_es_addr_30,
  input           up_es_wr_30,
  input   [15:0]  up_es_wdata_30,
  output  [15:0]  up_es_rdata_30,
  output          up_es_ready_30,
  input           up_es_reset_30,
  output          up_rx_pll_locked_30,
  input           up_rx_rst_30,
  input           up_rx_user_ready_30,
  output          up_rx_rst_done_30,
  input   [ 3:0]  up_rx_prbssel_30,
  input           up_rx_prbscntreset_30,
  output          up_rx_prbserr_30,
  output          up_rx_prbslocked_30,
  output  [ 1:0]  up_rx_bufstatus_30,
  input           up_rx_bufstatus_rst_30,
  input           up_rx_lpm_dfe_n_30,
  input   [ 2:0]  up_rx_rate_30,
  input   [ 1:0]  up_rx_sys_clk_sel_30,
  input   [ 2:0]  up_rx_out_clk_sel_30,
  input           up_rx_enb_30,
  input   [11:0]  up_rx_addr_30,
  input           up_rx_wr_30,
  input   [15:0]  up_rx_wdata_30,
  output  [15:0]  up_rx_rdata_30,
  output          up_rx_ready_30,
  output          up_tx_pll_locked_30,
  input           up_tx_rst_30,
  input           up_tx_user_ready_30,
  output          up_tx_rst_done_30,
  output  [ 1:0]  up_tx_bufstatus_30,
  input           up_tx_prbsforceerr_30,
  input   [ 3:0]  up_tx_prbssel_30,
  input           up_tx_lpm_dfe_n_30,
  input   [ 2:0]  up_tx_rate_30,
  input   [ 1:0]  up_tx_sys_clk_sel_30,
  input   [ 2:0]  up_tx_out_clk_sel_30,
  input   [ 4:0]  up_tx_diffctrl_30,
  input   [ 4:0]  up_tx_postcursor_30,
  input   [ 4:0]  up_tx_precursor_30,
  input           up_tx_enb_30,
  input   [11:0]  up_tx_addr_30,
  input           up_tx_wr_30,
  input   [15:0]  up_tx_wdata_30,
  output  [15:0]  up_tx_rdata_30,
  output          up_tx_ready_30,

  input           cpll_ref_clk_31,
  input           up_cpll_rst_31,

  input                            rx_31_p,
  input                            rx_31_n,
  output                           rx_out_clk_31,
  output                           rx_out_clk_div2_31,
  input                            rx_clk_31,
  input                            rx_clk_2x_31,
  output  [DATA_PATH_WIDTH-1:0]    rx_charisk_31,
  output  [DATA_PATH_WIDTH-1:0]    rx_disperr_31,
  output  [DATA_PATH_WIDTH-1:0]    rx_notintable_31,
  output  [DATA_PATH_WIDTH*8-1:0]  rx_data_31,
  input                            rx_calign_31,
  output  [1:0]                    rx_header_31,
  output                           rx_block_sync_31,

  output                           tx_31_p,
  output                           tx_31_n,
  output                           tx_out_clk_31,
  output                           tx_out_clk_div2_31,
  input                            tx_clk_31,
  input                            tx_clk_2x_31,
  input   [DATA_PATH_WIDTH-1:0]    tx_charisk_31,
  input   [DATA_PATH_WIDTH*8-1:0]  tx_data_31,
  input   [1:0]                    tx_header_31,

  input           up_es_enb_31,
  input   [11:0]  up_es_addr_31,
  input           up_es_wr_31,
  input   [15:0]  up_es_wdata_31,
  output  [15:0]  up_es_rdata_31,
  output          up_es_ready_31,
  input           up_es_reset_31,
  output          up_rx_pll_locked_31,
  input           up_rx_rst_31,
  input           up_rx_user_ready_31,
  output          up_rx_rst_done_31,
  input   [ 3:0]  up_rx_prbssel_31,
  input           up_rx_prbscntreset_31,
  output          up_rx_prbserr_31,
  output          up_rx_prbslocked_31,
  output  [ 1:0]  up_rx_bufstatus_31,
  input           up_rx_bufstatus_rst_31,
  input           up_rx_lpm_dfe_n_31,
  input   [ 2:0]  up_rx_rate_31,
  input   [ 1:0]  up_rx_sys_clk_sel_31,
  input   [ 2:0]  up_rx_out_clk_sel_31,
  input           up_rx_enb_31,
  input   [11:0]  up_rx_addr_31,
  input           up_rx_wr_31,
  input   [15:0]  up_rx_wdata_31,
  output  [15:0]  up_rx_rdata_31,
  output          up_rx_ready_31,
  output          up_tx_pll_locked_31,
  input           up_tx_rst_31,
  input           up_tx_user_ready_31,
  output          up_tx_rst_done_31,
  output  [ 1:0]  up_tx_bufstatus_31,
  input           up_tx_prbsforceerr_31,
  input   [ 3:0]  up_tx_prbssel_31,
  input           up_tx_lpm_dfe_n_31,
  input   [ 2:0]  up_tx_rate_31,
  input   [ 1:0]  up_tx_sys_clk_sel_31,
  input   [ 2:0]  up_tx_out_clk_sel_31,
  input   [ 4:0]  up_tx_diffctrl_31,
  input   [ 4:0]  up_tx_postcursor_31,
  input   [ 4:0]  up_tx_precursor_31,
  input           up_tx_enb_31,
  input   [11:0]  up_tx_addr_31,
  input           up_tx_wr_31,
  input   [15:0]  up_tx_wdata_31,
  output  [15:0]  up_tx_rdata_31,
  output          up_tx_ready_31
);

  // parameters

  localparam  integer NUM_OF_LANES = (TX_NUM_OF_LANES > RX_NUM_OF_LANES) ?
    TX_NUM_OF_LANES : RX_NUM_OF_LANES;

  // internal signals

  wire            qpll2ch_clk_0;
  wire            qpll2ch_ref_clk_0;
  wire            qpll2ch_locked_0;
  wire            qpll1_clk_0;
  wire            qpll1_ref_clk_0;
  wire            qpll1_locked_0;
  wire [ 1:0]     sys_clk_sel_0;
  wire            qpll_sel_0;
  wire            qpll2ch_clk_4;
  wire            qpll2ch_ref_clk_4;
  wire            qpll2ch_locked_4;
  wire            qpll1_clk_4;
  wire            qpll1_ref_clk_4;
  wire            qpll1_locked_4;
  wire [ 1:0]     sys_clk_sel_4;
  wire            qpll_sel_4;
  wire            qpll2ch_clk_8;
  wire            qpll2ch_ref_clk_8;
  wire            qpll2ch_locked_8;
  wire            qpll1_clk_8;
  wire            qpll1_ref_clk_8;
  wire            qpll1_locked_8;
  wire [ 1:0]     sys_clk_sel_8;
  wire            qpll_sel_8;
  wire            qpll2ch_clk_12;
  wire            qpll2ch_ref_clk_12;
  wire            qpll2ch_locked_12;
  wire            qpll1_clk_12;
  wire            qpll1_ref_clk_12;
  wire            qpll1_locked_12;
  wire [ 1:0]     sys_clk_sel_12;
  wire            qpll_sel_12;
  wire            qpll2ch_clk_16;
  wire            qpll2ch_ref_clk_16;
  wire            qpll2ch_locked_16;
  wire            qpll1_clk_16;
  wire            qpll1_ref_clk_16;
  wire            qpll1_locked_16;
  wire [ 1:0]     sys_clk_sel_16;
  wire            qpll_sel_16;
  wire            qpll2ch_clk_20;
  wire            qpll2ch_ref_clk_20;
  wire            qpll2ch_locked_20;
  wire            qpll1_clk_20;
  wire            qpll1_ref_clk_20;
  wire            qpll1_locked_20;
  wire [ 1:0]     sys_clk_sel_20;
  wire            qpll_sel_20;
  wire            qpll2ch_clk_24;
  wire            qpll2ch_ref_clk_24;
  wire            qpll2ch_locked_24;
  wire            qpll1_clk_24;
  wire            qpll1_ref_clk_24;
  wire            qpll1_locked_24;
  wire [ 1:0]     sys_clk_sel_24;
  wire            qpll_sel_24;
  wire            qpll2ch_clk_28;
  wire            qpll2ch_ref_clk_28;
  wire            qpll2ch_locked_28;
  wire            qpll1_clk_28;
  wire            qpll1_ref_clk_28;
  wire            qpll1_locked_28;
  wire [ 1:0]     sys_clk_sel_28;
  wire            qpll_sel_28;

  assign        sys_clk_sel_0 = up_tx_sys_clk_sel_0 | up_tx_sys_clk_sel_1 | up_tx_sys_clk_sel_2 | up_tx_sys_clk_sel_3 |
                                up_rx_sys_clk_sel_0 | up_rx_sys_clk_sel_1 | up_rx_sys_clk_sel_2 | up_rx_sys_clk_sel_3;
  assign        qpll_sel_0 = sys_clk_sel_0 == 2'd3 ? 0 : 1;
  assign        sys_clk_sel_4 = up_tx_sys_clk_sel_4 | up_tx_sys_clk_sel_5 | up_tx_sys_clk_sel_6 | up_tx_sys_clk_sel_7 |
                                up_rx_sys_clk_sel_4 | up_rx_sys_clk_sel_5 | up_rx_sys_clk_sel_6 | up_rx_sys_clk_sel_7;
  assign        qpll_sel_4 = sys_clk_sel_4 == 2'd3 ? 0 : 1;
  assign        sys_clk_sel_8 = up_tx_sys_clk_sel_8 | up_tx_sys_clk_sel_9 | up_tx_sys_clk_sel_10 | up_tx_sys_clk_sel_11 |
                                up_rx_sys_clk_sel_8 | up_rx_sys_clk_sel_9 | up_rx_sys_clk_sel_10 | up_rx_sys_clk_sel_11;
  assign        qpll_sel_8 = sys_clk_sel_8 == 2'd3 ? 0 : 1;
  assign        sys_clk_sel_12 = up_tx_sys_clk_sel_12 | up_tx_sys_clk_sel_13 | up_tx_sys_clk_sel_14 | up_tx_sys_clk_sel_15 |
                                up_rx_sys_clk_sel_12 | up_rx_sys_clk_sel_13 | up_rx_sys_clk_sel_14 | up_rx_sys_clk_sel_15;
  assign        qpll_sel_12 = sys_clk_sel_12 == 2'd3 ? 0 : 1;
  assign        sys_clk_sel_16 = up_tx_sys_clk_sel_16 | up_tx_sys_clk_sel_17 | up_tx_sys_clk_sel_18 | up_tx_sys_clk_sel_19 |
                                up_rx_sys_clk_sel_16 | up_rx_sys_clk_sel_17 | up_rx_sys_clk_sel_18 | up_rx_sys_clk_sel_19;
  assign        qpll_sel_16 = sys_clk_sel_16 == 2'd3 ? 0 : 1;
  assign        sys_clk_sel_20 = up_tx_sys_clk_sel_20 | up_tx_sys_clk_sel_21 | up_tx_sys_clk_sel_22 | up_tx_sys_clk_sel_23 |
                                up_rx_sys_clk_sel_20 | up_rx_sys_clk_sel_21 | up_rx_sys_clk_sel_22 | up_rx_sys_clk_sel_23;
  assign        qpll_sel_20 = sys_clk_sel_20 == 2'd3 ? 0 : 1;
  assign        sys_clk_sel_24 = up_tx_sys_clk_sel_24 | up_tx_sys_clk_sel_25 | up_tx_sys_clk_sel_26 | up_tx_sys_clk_sel_27 |
                                up_rx_sys_clk_sel_24 | up_rx_sys_clk_sel_25 | up_rx_sys_clk_sel_26 | up_rx_sys_clk_sel_27;
  assign        qpll_sel_24 = sys_clk_sel_24 == 2'd3 ? 0 : 1;
  assign        sys_clk_sel_28 = up_tx_sys_clk_sel_28 | up_tx_sys_clk_sel_29 | up_tx_sys_clk_sel_30 | up_tx_sys_clk_sel_31 |
                                up_rx_sys_clk_sel_28 | up_rx_sys_clk_sel_29 | up_rx_sys_clk_sel_30 | up_rx_sys_clk_sel_31;
  assign        qpll_sel_28 = sys_clk_sel_28 == 2'd3 ? 0 : 1;

  // instantiations

  generate
  if (NUM_OF_LANES >= 1) begin
  util_adxcvr_xcm #(
    .XCVR_TYPE (XCVR_TYPE),
    .QPLL_REFCLK_DIV (QPLL_REFCLK_DIV),
    .QPLL_FBDIV_RATIO (QPLL_FBDIV_RATIO),
    .POR_CFG (POR_CFG),
    .PPF0_CFG (PPF0_CFG),
    .PPF1_CFG (PPF1_CFG),
    .QPLL_CFG (QPLL_CFG),
    .QPLL_FBDIV (QPLL_FBDIV),
    .QPLL_CFG0 (QPLL_CFG0),
    .QPLL_CFG1 (QPLL_CFG1),
    .QPLL_CFG1_G3 (QPLL_CFG1_G3),
    .QPLL_CFG2 (QPLL_CFG2),
    .QPLL_CFG2_G3 (QPLL_CFG2_G3),
    .QPLL_CFG3 (QPLL_CFG3),
    .QPLL_CP_G3 (QPLL_CP_G3),
    .QPLL_LPF (QPLL_LPF),
    .QPLL_CP (QPLL_CP),
    .QPLL_CFG4 (QPLL_CFG4)
  ) i_xcm_0 (
    .qpll_ref_clk (qpll_ref_clk_0),
    .qpll_sel (qpll_sel_0),
    .qpll2ch_clk (qpll2ch_clk_0),
    .qpll2ch_ref_clk (qpll2ch_ref_clk_0),
    .qpll2ch_locked (qpll2ch_locked_0),
    .qpll1_clk (qpll1_clk_0),
    .qpll1_ref_clk (qpll1_ref_clk_0),
    .qpll1_locked (qpll1_locked_0),
    .up_rstn (up_rstn),
    .up_clk (up_clk),
    .up_qpll_rst (up_qpll_rst_0),
    .up_cm_enb (up_cm_enb_0),
    .up_cm_addr (up_cm_addr_0),
    .up_cm_wr (up_cm_wr_0),
    .up_cm_wdata (up_cm_wdata_0),
    .up_cm_rdata (up_cm_rdata_0),
    .up_cm_ready (up_cm_ready_0));
  end else begin
  assign qpll2ch_clk_0 = 1'd0;
  assign qpll2ch_ref_clk_0 = 1'd0;
  assign qpll2ch_locked_0 = 1'd0;
  assign qpll1_clk_0 = 1'd0;
  assign qpll1_ref_clk_0 = 1'd0;
  assign qpll1_locked_0 = 1'd0;
  assign up_cm_rdata_0 = 16'd0;
  assign up_cm_ready_0 = 1'd0;
  end
  endgenerate

  generate
  if (NUM_OF_LANES >= 1) begin
  util_adxcvr_xch #(
    .XCVR_TYPE (XCVR_TYPE),
    .LINK_MODE (LINK_MODE),
    .DATA_PATH_WIDTH (DATA_PATH_WIDTH),
    .CPLL_FBDIV (CPLL_FBDIV),
    .CPLL_FBDIV_4_5 (CPLL_FBDIV_4_5),
    .CPLL_CFG0 (CPLL_CFG0),
    .CPLL_CFG1 (CPLL_CFG1),
    .CPLL_CFG2 (CPLL_CFG2),
    .CPLL_CFG3 (CPLL_CFG3),
    .TX_OUT_DIV (TX_OUT_DIV),
    .TX_CLK25_DIV (TX_CLK25_DIV),
    .TX_POLARITY ((TX_LANE_INVERT >> 0) & 1),
    .TX_PI_BIASSET (TX_PI_BIASSET),
    .TXPI_CFG (TXPI_CFG),
    .A_TXDIFFCTRL (A_TXDIFFCTRL),
    .RX_OUT_DIV (RX_OUT_DIV),
    .RX_CLK25_DIV (RX_CLK25_DIV),
    .RX_DFE_LPM_CFG (RX_DFE_LPM_CFG),
    .RX_PMA_CFG (RX_PMA_CFG),
    .RX_CDR_CFG (RX_CDR_CFG),
    .RX_POLARITY ((RX_LANE_INVERT >> 0) & 1),
    .RXCDR_CFG0 (RXCDR_CFG0),
    .RXCDR_CFG2 (RXCDR_CFG2),
    .RXCDR_CFG2_GEN2 (RXCDR_CFG2_GEN2),
    .RXCDR_CFG2_GEN4 (RXCDR_CFG2_GEN4),
    .RXCDR_CFG3 (RXCDR_CFG3),
    .RXCDR_CFG3_GEN2 (RXCDR_CFG3_GEN2),
    .RXCDR_CFG3_GEN3 (RXCDR_CFG3_GEN3),
    .RXCDR_CFG3_GEN4 (RXCDR_CFG3_GEN4),
    .RXDFE_KH_CFG2 (RXDFE_KH_CFG2),
    .RXDFE_KH_CFG3 (RXDFE_KH_CFG3),
    .RX_WIDEMODE_CDR (RX_WIDEMODE_CDR),
    .RX_XMODE_SEL (RX_XMODE_SEL),
    .TXDRV_FREQBAND (TXDRV_FREQBAND),
    .TXFE_CFG0 (TXFE_CFG0),
    .TXFE_CFG1 (TXFE_CFG1),
    .TXFE_CFG2 (TXFE_CFG2),
    .TXFE_CFG3 (TXFE_CFG3),
    .TXPI_CFG0 (TXPI_CFG0),
    .TXPI_CFG1 (TXPI_CFG1),
    .TXSWBST_EN (TXSWBST_EN),
    .CH_HSPMUX (CH_HSPMUX),
    .PREIQ_FREQ_BST (PREIQ_FREQ_BST),
    .RXPI_CFG0 (RXPI_CFG0),
    .RXPI_CFG1 (RXPI_CFG1),
    .RTX_BUF_CML_CTRL (RTX_BUF_CML_CTRL)
  ) i_xch_0 (
    .qpll2ch_clk (qpll2ch_clk_0),
    .qpll2ch_ref_clk (qpll2ch_ref_clk_0),
    .qpll2ch_locked (qpll2ch_locked_0),
    .qpll1_clk (qpll1_clk_0),
    .qpll1_ref_clk (qpll1_ref_clk_0),
    .qpll1_locked (qpll1_locked_0),
    .cpll_ref_clk (cpll_ref_clk_0),
    .up_cpll_rst (up_cpll_rst_0),
    .rx_p (rx_0_p),
    .rx_n (rx_0_n),
    .rx_out_clk (rx_out_clk_0),
    .rx_out_clk_div2 (rx_out_clk_div2_0),
    .rx_clk (rx_clk_0),
    .rx_clk_2x (rx_clk_2x_0),
    .rx_charisk (rx_charisk_0),
    .rx_disperr (rx_disperr_0),
    .rx_notintable (rx_notintable_0),
    .rx_data (rx_data_0),
    .rx_calign (rx_calign_0),
    .rx_header(rx_header_0),
    .rx_block_sync(rx_block_sync_0),
    .tx_p (tx_0_p),
    .tx_n (tx_0_n),
    .tx_out_clk (tx_out_clk_0),
    .tx_out_clk_div2 (tx_out_clk_div2_0),
    .tx_clk (tx_clk_0),
    .tx_clk_2x (tx_clk_2x_0),
    .tx_charisk (tx_charisk_0),
    .tx_data (tx_data_0),
    .tx_header (tx_header_0),
    .up_rstn (up_rstn),
    .up_clk (up_clk),
    .up_es_enb (up_es_enb_0),
    .up_es_addr (up_es_addr_0),
    .up_es_wr (up_es_wr_0),
    .up_es_wdata (up_es_wdata_0),
    .up_es_rdata (up_es_rdata_0),
    .up_es_ready (up_es_ready_0),
    .up_es_reset (up_es_reset_0),
    .up_rx_pll_locked (up_rx_pll_locked_0),
    .up_rx_rst (up_rx_rst_0),
    .up_rx_user_ready (up_rx_user_ready_0),
    .up_rx_rst_done (up_rx_rst_done_0),
    .up_rx_prbssel (up_rx_prbssel_0),
    .up_rx_prbscntreset (up_rx_prbscntreset_0),
    .up_rx_prbserr (up_rx_prbserr_0),
    .up_rx_prbslocked (up_rx_prbslocked_0),
    .up_rx_bufstatus (up_rx_bufstatus_0),
    .up_rx_bufstatus_rst (up_rx_bufstatus_rst_0),
    .up_rx_lpm_dfe_n (up_rx_lpm_dfe_n_0),
    .up_rx_rate (up_rx_rate_0),
    .up_rx_sys_clk_sel (up_rx_sys_clk_sel_0),
    .up_rx_out_clk_sel (up_rx_out_clk_sel_0),
    .up_rx_enb (up_rx_enb_0),
    .up_rx_addr (up_rx_addr_0),
    .up_rx_wr (up_rx_wr_0),
    .up_rx_wdata (up_rx_wdata_0),
    .up_rx_rdata (up_rx_rdata_0),
    .up_rx_ready (up_rx_ready_0),
    .up_tx_pll_locked (up_tx_pll_locked_0),
    .up_tx_rst (up_tx_rst_0),
    .up_tx_user_ready (up_tx_user_ready_0),
    .up_tx_rst_done (up_tx_rst_done_0),
    .up_tx_bufstatus (up_tx_bufstatus_0),
    .up_tx_prbsforceerr (up_tx_prbsforceerr_0),
    .up_tx_prbssel (up_tx_prbssel_0),
    .up_tx_lpm_dfe_n (up_tx_lpm_dfe_n_0),
    .up_tx_rate (up_tx_rate_0),
    .up_tx_sys_clk_sel (up_tx_sys_clk_sel_0),
    .up_tx_out_clk_sel (up_tx_out_clk_sel_0),
    .up_tx_diffctrl (up_tx_diffctrl_0),
    .up_tx_postcursor (up_tx_postcursor_0),
    .up_tx_precursor (up_tx_precursor_0),
    .up_tx_enb (up_tx_enb_0),
    .up_tx_addr (up_tx_addr_0),
    .up_tx_wr (up_tx_wr_0),
    .up_tx_wdata (up_tx_wdata_0),
    .up_tx_rdata (up_tx_rdata_0),
    .up_tx_ready (up_tx_ready_0));
  end else begin
  assign rx_out_clk_0 = 1'd0;
  assign rx_charisk_0 = 4'd0;
  assign rx_disperr_0 = 4'd0;
  assign rx_notintable_0 = 4'd0;
  assign rx_data_0 = 32'd0;
  assign tx_0_p = 1'd0;
  assign tx_0_n = 1'd0;
  assign tx_out_clk_0 = 1'd0;
  assign up_es_rdata_0 = 16'd0;
  assign up_es_ready_0 = 1'd0;
  assign up_rx_pll_locked_0 = 1'd0;
  assign up_rx_rst_done_0 = 1'd0;
  assign up_rx_rdata_0 = 16'd0;
  assign up_rx_ready_0 = 1'd0;
  assign up_tx_pll_locked_0 = 1'd0;
  assign up_tx_rst_done_0 = 1'd0;
  assign up_tx_rdata_0 = 16'd0;
  assign up_tx_ready_0 = 1'd0;
  end
  endgenerate

  generate
  if (NUM_OF_LANES >= 2) begin
  util_adxcvr_xch #(
    .XCVR_TYPE (XCVR_TYPE),
    .LINK_MODE (LINK_MODE),
    .DATA_PATH_WIDTH (DATA_PATH_WIDTH),
    .CPLL_FBDIV (CPLL_FBDIV),
    .CPLL_FBDIV_4_5 (CPLL_FBDIV_4_5),
    .CPLL_CFG0 (CPLL_CFG0),
    .CPLL_CFG1 (CPLL_CFG1),
    .CPLL_CFG2 (CPLL_CFG2),
    .CPLL_CFG3 (CPLL_CFG3),
    .TX_OUT_DIV (TX_OUT_DIV),
    .TX_CLK25_DIV (TX_CLK25_DIV),
    .TX_POLARITY ((TX_LANE_INVERT >> 1) & 1),
    .TX_PI_BIASSET (TX_PI_BIASSET),
    .TXPI_CFG (TXPI_CFG),
    .A_TXDIFFCTRL (A_TXDIFFCTRL),
    .RX_OUT_DIV (RX_OUT_DIV),
    .RX_CLK25_DIV (RX_CLK25_DIV),
    .RX_DFE_LPM_CFG (RX_DFE_LPM_CFG),
    .RX_PMA_CFG (RX_PMA_CFG),
    .RX_CDR_CFG (RX_CDR_CFG),
    .RX_POLARITY ((RX_LANE_INVERT >> 1) & 1),
    .RXCDR_CFG0 (RXCDR_CFG0),
    .RXCDR_CFG2 (RXCDR_CFG2),
    .RXCDR_CFG2_GEN2 (RXCDR_CFG2_GEN2),
    .RXCDR_CFG2_GEN4 (RXCDR_CFG2_GEN4),
    .RXCDR_CFG3 (RXCDR_CFG3),
    .RXCDR_CFG3_GEN2 (RXCDR_CFG3_GEN2),
    .RXCDR_CFG3_GEN3 (RXCDR_CFG3_GEN3),
    .RXCDR_CFG3_GEN4 (RXCDR_CFG3_GEN4),
    .RXDFE_KH_CFG2 (RXDFE_KH_CFG2),
    .RXDFE_KH_CFG3 (RXDFE_KH_CFG3),
    .RX_WIDEMODE_CDR (RX_WIDEMODE_CDR),
    .RX_XMODE_SEL (RX_XMODE_SEL),
    .TXDRV_FREQBAND (TXDRV_FREQBAND),
    .TXFE_CFG0 (TXFE_CFG0),
    .TXFE_CFG1 (TXFE_CFG1),
    .TXFE_CFG2 (TXFE_CFG2),
    .TXFE_CFG3 (TXFE_CFG3),
    .TXPI_CFG0 (TXPI_CFG0),
    .TXPI_CFG1 (TXPI_CFG1),
    .TXSWBST_EN (TXSWBST_EN),
    .CH_HSPMUX (CH_HSPMUX),
    .PREIQ_FREQ_BST (PREIQ_FREQ_BST),
    .RXPI_CFG0 (RXPI_CFG0),
    .RXPI_CFG1 (RXPI_CFG1),
    .RTX_BUF_CML_CTRL (RTX_BUF_CML_CTRL)
  ) i_xch_1 (
    .qpll2ch_clk (qpll2ch_clk_0),
    .qpll2ch_ref_clk (qpll2ch_ref_clk_0),
    .qpll2ch_locked (qpll2ch_locked_0),
    .qpll1_clk (qpll1_clk_0),
    .qpll1_ref_clk (qpll1_ref_clk_0),
    .qpll1_locked (qpll1_locked_0),
    .cpll_ref_clk (cpll_ref_clk_1),
    .up_cpll_rst (up_cpll_rst_1),
    .rx_p (rx_1_p),
    .rx_n (rx_1_n),
    .rx_out_clk (rx_out_clk_1),
    .rx_out_clk_div2 (rx_out_clk_div2_1),
    .rx_clk (rx_clk_1),
    .rx_clk_2x (rx_clk_2x_1),
    .rx_charisk (rx_charisk_1),
    .rx_disperr (rx_disperr_1),
    .rx_notintable (rx_notintable_1),
    .rx_data (rx_data_1),
    .rx_calign (rx_calign_1),
    .rx_header(rx_header_1),
    .rx_block_sync(rx_block_sync_1),
    .tx_p (tx_1_p),
    .tx_n (tx_1_n),
    .tx_out_clk (tx_out_clk_1),
    .tx_out_clk_div2 (tx_out_clk_div2_1),
    .tx_clk (tx_clk_1),
    .tx_clk_2x (tx_clk_2x_1),
    .tx_charisk (tx_charisk_1),
    .tx_data (tx_data_1),
    .tx_header (tx_header_1),
    .up_rstn (up_rstn),
    .up_clk (up_clk),
    .up_es_enb (up_es_enb_1),
    .up_es_addr (up_es_addr_1),
    .up_es_wr (up_es_wr_1),
    .up_es_wdata (up_es_wdata_1),
    .up_es_rdata (up_es_rdata_1),
    .up_es_ready (up_es_ready_1),
    .up_es_reset (up_es_reset_1),
    .up_rx_pll_locked (up_rx_pll_locked_1),
    .up_rx_rst (up_rx_rst_1),
    .up_rx_user_ready (up_rx_user_ready_1),
    .up_rx_rst_done (up_rx_rst_done_1),
    .up_rx_prbssel (up_rx_prbssel_1),
    .up_rx_prbscntreset (up_rx_prbscntreset_1),
    .up_rx_prbserr (up_rx_prbserr_1),
    .up_rx_prbslocked (up_rx_prbslocked_1),
    .up_rx_bufstatus (up_rx_bufstatus_1),
    .up_rx_bufstatus_rst (up_rx_bufstatus_rst_1),
    .up_rx_lpm_dfe_n (up_rx_lpm_dfe_n_1),
    .up_rx_rate (up_rx_rate_1),
    .up_rx_sys_clk_sel (up_rx_sys_clk_sel_1),
    .up_rx_out_clk_sel (up_rx_out_clk_sel_1),
    .up_rx_enb (up_rx_enb_1),
    .up_rx_addr (up_rx_addr_1),
    .up_rx_wr (up_rx_wr_1),
    .up_rx_wdata (up_rx_wdata_1),
    .up_rx_rdata (up_rx_rdata_1),
    .up_rx_ready (up_rx_ready_1),
    .up_tx_pll_locked (up_tx_pll_locked_1),
    .up_tx_rst (up_tx_rst_1),
    .up_tx_user_ready (up_tx_user_ready_1),
    .up_tx_rst_done (up_tx_rst_done_1),
    .up_tx_bufstatus (up_tx_bufstatus_1),
    .up_tx_prbsforceerr (up_tx_prbsforceerr_1),
    .up_tx_prbssel (up_tx_prbssel_1),
    .up_tx_lpm_dfe_n (up_tx_lpm_dfe_n_1),
    .up_tx_rate (up_tx_rate_1),
    .up_tx_sys_clk_sel (up_tx_sys_clk_sel_1),
    .up_tx_out_clk_sel (up_tx_out_clk_sel_1),
    .up_tx_diffctrl (up_tx_diffctrl_1),
    .up_tx_postcursor (up_tx_postcursor_1),
    .up_tx_precursor (up_tx_precursor_1),
    .up_tx_enb (up_tx_enb_1),
    .up_tx_addr (up_tx_addr_1),
    .up_tx_wr (up_tx_wr_1),
    .up_tx_wdata (up_tx_wdata_1),
    .up_tx_rdata (up_tx_rdata_1),
    .up_tx_ready (up_tx_ready_1));
  end else begin
  assign rx_out_clk_1 = 1'd0;
  assign rx_charisk_1 = 4'd0;
  assign rx_disperr_1 = 4'd0;
  assign rx_notintable_1 = 4'd0;
  assign rx_data_1 = 32'd0;
  assign tx_1_p = 1'd0;
  assign tx_1_n = 1'd0;
  assign tx_out_clk_1 = 1'd0;
  assign up_es_rdata_1 = 16'd0;
  assign up_es_ready_1 = 1'd0;
  assign up_rx_pll_locked_1 = 1'd0;
  assign up_rx_rst_done_1 = 1'd0;
  assign up_rx_rdata_1 = 16'd0;
  assign up_rx_ready_1 = 1'd0;
  assign up_tx_pll_locked_1 = 1'd0;
  assign up_tx_rst_done_1 = 1'd0;
  assign up_tx_rdata_1 = 16'd0;
  assign up_tx_ready_1 = 1'd0;
  end
  endgenerate

  generate
  if (NUM_OF_LANES >= 3) begin
  util_adxcvr_xch #(
    .XCVR_TYPE (XCVR_TYPE),
    .LINK_MODE (LINK_MODE),
    .DATA_PATH_WIDTH (DATA_PATH_WIDTH),
    .CPLL_FBDIV (CPLL_FBDIV),
    .CPLL_FBDIV_4_5 (CPLL_FBDIV_4_5),
    .CPLL_CFG0 (CPLL_CFG0),
    .CPLL_CFG1 (CPLL_CFG1),
    .CPLL_CFG2 (CPLL_CFG2),
    .CPLL_CFG3 (CPLL_CFG3),
    .TX_OUT_DIV (TX_OUT_DIV),
    .TX_CLK25_DIV (TX_CLK25_DIV),
    .TX_POLARITY ((TX_LANE_INVERT >> 2) & 1),
    .TX_PI_BIASSET (TX_PI_BIASSET),
    .TXPI_CFG (TXPI_CFG),
    .A_TXDIFFCTRL (A_TXDIFFCTRL),
    .RX_OUT_DIV (RX_OUT_DIV),
    .RX_CLK25_DIV (RX_CLK25_DIV),
    .RX_DFE_LPM_CFG (RX_DFE_LPM_CFG),
    .RX_PMA_CFG (RX_PMA_CFG),
    .RX_CDR_CFG (RX_CDR_CFG),
    .RX_POLARITY ((RX_LANE_INVERT >> 2) & 1),
    .RXCDR_CFG0 (RXCDR_CFG0),
    .RXCDR_CFG2 (RXCDR_CFG2),
    .RXCDR_CFG2_GEN2 (RXCDR_CFG2_GEN2),
    .RXCDR_CFG2_GEN4 (RXCDR_CFG2_GEN4),
    .RXCDR_CFG3 (RXCDR_CFG3),
    .RXCDR_CFG3_GEN2 (RXCDR_CFG3_GEN2),
    .RXCDR_CFG3_GEN3 (RXCDR_CFG3_GEN3),
    .RXCDR_CFG3_GEN4 (RXCDR_CFG3_GEN4),
    .RXDFE_KH_CFG2 (RXDFE_KH_CFG2),
    .RXDFE_KH_CFG3 (RXDFE_KH_CFG3),
    .RX_WIDEMODE_CDR (RX_WIDEMODE_CDR),
    .RX_XMODE_SEL (RX_XMODE_SEL),
    .TXDRV_FREQBAND (TXDRV_FREQBAND),
    .TXFE_CFG0 (TXFE_CFG0),
    .TXFE_CFG1 (TXFE_CFG1),
    .TXFE_CFG2 (TXFE_CFG2),
    .TXFE_CFG3 (TXFE_CFG3),
    .TXPI_CFG0 (TXPI_CFG0),
    .TXPI_CFG1 (TXPI_CFG1),
    .TXSWBST_EN (TXSWBST_EN),
    .CH_HSPMUX (CH_HSPMUX),
    .PREIQ_FREQ_BST (PREIQ_FREQ_BST),
    .RXPI_CFG0 (RXPI_CFG0),
    .RXPI_CFG1 (RXPI_CFG1),
    .RTX_BUF_CML_CTRL (RTX_BUF_CML_CTRL)
  ) i_xch_2 (
    .qpll2ch_clk (qpll2ch_clk_0),
    .qpll2ch_ref_clk (qpll2ch_ref_clk_0),
    .qpll2ch_locked (qpll2ch_locked_0),
    .qpll1_clk (qpll1_clk_0),
    .qpll1_ref_clk (qpll1_ref_clk_0),
    .qpll1_locked (qpll1_locked_0),
    .cpll_ref_clk (cpll_ref_clk_2),
    .up_cpll_rst (up_cpll_rst_2),
    .rx_p (rx_2_p),
    .rx_n (rx_2_n),
    .rx_out_clk (rx_out_clk_2),
    .rx_out_clk_div2 (rx_out_clk_div2_2),
    .rx_clk (rx_clk_2),
    .rx_clk_2x (rx_clk_2x_2),
    .rx_charisk (rx_charisk_2),
    .rx_disperr (rx_disperr_2),
    .rx_notintable (rx_notintable_2),
    .rx_data (rx_data_2),
    .rx_calign (rx_calign_2),
    .rx_header(rx_header_2),
    .rx_block_sync(rx_block_sync_2),
    .tx_p (tx_2_p),
    .tx_n (tx_2_n),
    .tx_out_clk (tx_out_clk_2),
    .tx_out_clk_div2 (tx_out_clk_div2_2),
    .tx_clk (tx_clk_2),
    .tx_clk_2x (tx_clk_2x_2),
    .tx_charisk (tx_charisk_2),
    .tx_data (tx_data_2),
    .tx_header (tx_header_2),
    .up_rstn (up_rstn),
    .up_clk (up_clk),
    .up_es_enb (up_es_enb_2),
    .up_es_addr (up_es_addr_2),
    .up_es_wr (up_es_wr_2),
    .up_es_wdata (up_es_wdata_2),
    .up_es_rdata (up_es_rdata_2),
    .up_es_ready (up_es_ready_2),
    .up_es_reset (up_es_reset_2),
    .up_rx_pll_locked (up_rx_pll_locked_2),
    .up_rx_rst (up_rx_rst_2),
    .up_rx_user_ready (up_rx_user_ready_2),
    .up_rx_rst_done (up_rx_rst_done_2),
    .up_rx_prbssel (up_rx_prbssel_2),
    .up_rx_prbscntreset (up_rx_prbscntreset_2),
    .up_rx_prbserr (up_rx_prbserr_2),
    .up_rx_prbslocked (up_rx_prbslocked_2),
    .up_rx_bufstatus (up_rx_bufstatus_2),
    .up_rx_bufstatus_rst (up_rx_bufstatus_rst_2),
    .up_rx_lpm_dfe_n (up_rx_lpm_dfe_n_2),
    .up_rx_rate (up_rx_rate_2),
    .up_rx_sys_clk_sel (up_rx_sys_clk_sel_2),
    .up_rx_out_clk_sel (up_rx_out_clk_sel_2),
    .up_rx_enb (up_rx_enb_2),
    .up_rx_addr (up_rx_addr_2),
    .up_rx_wr (up_rx_wr_2),
    .up_rx_wdata (up_rx_wdata_2),
    .up_rx_rdata (up_rx_rdata_2),
    .up_rx_ready (up_rx_ready_2),
    .up_tx_pll_locked (up_tx_pll_locked_2),
    .up_tx_rst (up_tx_rst_2),
    .up_tx_user_ready (up_tx_user_ready_2),
    .up_tx_rst_done (up_tx_rst_done_2),
    .up_tx_bufstatus (up_tx_bufstatus_2),
    .up_tx_prbsforceerr (up_tx_prbsforceerr_2),
    .up_tx_prbssel (up_tx_prbssel_2),
    .up_tx_lpm_dfe_n (up_tx_lpm_dfe_n_2),
    .up_tx_rate (up_tx_rate_2),
    .up_tx_sys_clk_sel (up_tx_sys_clk_sel_2),
    .up_tx_out_clk_sel (up_tx_out_clk_sel_2),
    .up_tx_diffctrl (up_tx_diffctrl_2),
    .up_tx_postcursor (up_tx_postcursor_2),
    .up_tx_precursor (up_tx_precursor_2),
    .up_tx_enb (up_tx_enb_2),
    .up_tx_addr (up_tx_addr_2),
    .up_tx_wr (up_tx_wr_2),
    .up_tx_wdata (up_tx_wdata_2),
    .up_tx_rdata (up_tx_rdata_2),
    .up_tx_ready (up_tx_ready_2));
  end else begin
  assign rx_out_clk_2 = 1'd0;
  assign rx_charisk_2 = 4'd0;
  assign rx_disperr_2 = 4'd0;
  assign rx_notintable_2 = 4'd0;
  assign rx_data_2 = 32'd0;
  assign tx_2_p = 1'd0;
  assign tx_2_n = 1'd0;
  assign tx_out_clk_2 = 1'd0;
  assign up_es_rdata_2 = 16'd0;
  assign up_es_ready_2 = 1'd0;
  assign up_rx_pll_locked_2 = 1'd0;
  assign up_rx_rst_done_2 = 1'd0;
  assign up_rx_rdata_2 = 16'd0;
  assign up_rx_ready_2 = 1'd0;
  assign up_tx_pll_locked_2 = 1'd0;
  assign up_tx_rst_done_2 = 1'd0;
  assign up_tx_rdata_2 = 16'd0;
  assign up_tx_ready_2 = 1'd0;
  end
  endgenerate

  generate
  if (NUM_OF_LANES >= 4) begin
  util_adxcvr_xch #(
    .XCVR_TYPE (XCVR_TYPE),
    .LINK_MODE (LINK_MODE),
    .DATA_PATH_WIDTH (DATA_PATH_WIDTH),
    .CPLL_FBDIV (CPLL_FBDIV),
    .CPLL_FBDIV_4_5 (CPLL_FBDIV_4_5),
    .CPLL_CFG0 (CPLL_CFG0),
    .CPLL_CFG1 (CPLL_CFG1),
    .CPLL_CFG2 (CPLL_CFG2),
    .CPLL_CFG3 (CPLL_CFG3),
    .TX_OUT_DIV (TX_OUT_DIV),
    .TX_CLK25_DIV (TX_CLK25_DIV),
    .TX_POLARITY ((TX_LANE_INVERT >> 3) & 1),
    .TX_PI_BIASSET (TX_PI_BIASSET),
    .TXPI_CFG (TXPI_CFG),
    .A_TXDIFFCTRL (A_TXDIFFCTRL),
    .RX_OUT_DIV (RX_OUT_DIV),
    .RX_CLK25_DIV (RX_CLK25_DIV),
    .RX_DFE_LPM_CFG (RX_DFE_LPM_CFG),
    .RX_PMA_CFG (RX_PMA_CFG),
    .RX_CDR_CFG (RX_CDR_CFG),
    .RX_POLARITY ((RX_LANE_INVERT >> 3) & 1),
    .RXCDR_CFG0 (RXCDR_CFG0),
    .RXCDR_CFG2 (RXCDR_CFG2),
    .RXCDR_CFG2_GEN2 (RXCDR_CFG2_GEN2),
    .RXCDR_CFG2_GEN4 (RXCDR_CFG2_GEN4),
    .RXCDR_CFG3 (RXCDR_CFG3),
    .RXCDR_CFG3_GEN2 (RXCDR_CFG3_GEN2),
    .RXCDR_CFG3_GEN3 (RXCDR_CFG3_GEN3),
    .RXCDR_CFG3_GEN4 (RXCDR_CFG3_GEN4),
    .RXDFE_KH_CFG2 (RXDFE_KH_CFG2),
    .RXDFE_KH_CFG3 (RXDFE_KH_CFG3),
    .RX_WIDEMODE_CDR (RX_WIDEMODE_CDR),
    .RX_XMODE_SEL (RX_XMODE_SEL),
    .TXDRV_FREQBAND (TXDRV_FREQBAND),
    .TXFE_CFG0 (TXFE_CFG0),
    .TXFE_CFG1 (TXFE_CFG1),
    .TXFE_CFG2 (TXFE_CFG2),
    .TXFE_CFG3 (TXFE_CFG3),
    .TXPI_CFG0 (TXPI_CFG0),
    .TXPI_CFG1 (TXPI_CFG1),
    .TXSWBST_EN (TXSWBST_EN),
    .CH_HSPMUX (CH_HSPMUX),
    .PREIQ_FREQ_BST (PREIQ_FREQ_BST),
    .RXPI_CFG0 (RXPI_CFG0),
    .RXPI_CFG1 (RXPI_CFG1),
    .RTX_BUF_CML_CTRL (RTX_BUF_CML_CTRL)
  ) i_xch_3 (
    .qpll2ch_clk (qpll2ch_clk_0),
    .qpll2ch_ref_clk (qpll2ch_ref_clk_0),
    .qpll2ch_locked (qpll2ch_locked_0),
    .qpll1_clk (qpll1_clk_0),
    .qpll1_ref_clk (qpll1_ref_clk_0),
    .qpll1_locked (qpll1_locked_0),
    .cpll_ref_clk (cpll_ref_clk_3),
    .up_cpll_rst (up_cpll_rst_3),
    .rx_p (rx_3_p),
    .rx_n (rx_3_n),
    .rx_out_clk (rx_out_clk_3),
    .rx_out_clk_div2 (rx_out_clk_div2_3),
    .rx_clk (rx_clk_3),
    .rx_clk_2x (rx_clk_2x_3),
    .rx_charisk (rx_charisk_3),
    .rx_disperr (rx_disperr_3),
    .rx_notintable (rx_notintable_3),
    .rx_data (rx_data_3),
    .rx_calign (rx_calign_3),
    .rx_header(rx_header_3),
    .rx_block_sync(rx_block_sync_3),
    .tx_p (tx_3_p),
    .tx_n (tx_3_n),
    .tx_out_clk (tx_out_clk_3),
    .tx_out_clk_div2 (tx_out_clk_div2_3),
    .tx_clk (tx_clk_3),
    .tx_clk_2x (tx_clk_2x_3),
    .tx_charisk (tx_charisk_3),
    .tx_data (tx_data_3),
    .tx_header (tx_header_3),
    .up_rstn (up_rstn),
    .up_clk (up_clk),
    .up_es_enb (up_es_enb_3),
    .up_es_addr (up_es_addr_3),
    .up_es_wr (up_es_wr_3),
    .up_es_wdata (up_es_wdata_3),
    .up_es_rdata (up_es_rdata_3),
    .up_es_ready (up_es_ready_3),
    .up_es_reset (up_es_reset_3),
    .up_rx_pll_locked (up_rx_pll_locked_3),
    .up_rx_rst (up_rx_rst_3),
    .up_rx_user_ready (up_rx_user_ready_3),
    .up_rx_rst_done (up_rx_rst_done_3),
    .up_rx_prbssel (up_rx_prbssel_3),
    .up_rx_prbscntreset (up_rx_prbscntreset_3),
    .up_rx_prbserr (up_rx_prbserr_3),
    .up_rx_prbslocked (up_rx_prbslocked_3),
    .up_rx_bufstatus (up_rx_bufstatus_3),
    .up_rx_bufstatus_rst (up_rx_bufstatus_rst_3),
    .up_rx_lpm_dfe_n (up_rx_lpm_dfe_n_3),
    .up_rx_rate (up_rx_rate_3),
    .up_rx_sys_clk_sel (up_rx_sys_clk_sel_3),
    .up_rx_out_clk_sel (up_rx_out_clk_sel_3),
    .up_rx_enb (up_rx_enb_3),
    .up_rx_addr (up_rx_addr_3),
    .up_rx_wr (up_rx_wr_3),
    .up_rx_wdata (up_rx_wdata_3),
    .up_rx_rdata (up_rx_rdata_3),
    .up_rx_ready (up_rx_ready_3),
    .up_tx_pll_locked (up_tx_pll_locked_3),
    .up_tx_rst (up_tx_rst_3),
    .up_tx_user_ready (up_tx_user_ready_3),
    .up_tx_rst_done (up_tx_rst_done_3),
    .up_tx_bufstatus (up_tx_bufstatus_3),
    .up_tx_prbsforceerr (up_tx_prbsforceerr_3),
    .up_tx_prbssel (up_tx_prbssel_3),
    .up_tx_lpm_dfe_n (up_tx_lpm_dfe_n_3),
    .up_tx_rate (up_tx_rate_3),
    .up_tx_sys_clk_sel (up_tx_sys_clk_sel_3),
    .up_tx_out_clk_sel (up_tx_out_clk_sel_3),
    .up_tx_diffctrl (up_tx_diffctrl_3),
    .up_tx_postcursor (up_tx_postcursor_3),
    .up_tx_precursor (up_tx_precursor_3),
    .up_tx_enb (up_tx_enb_3),
    .up_tx_addr (up_tx_addr_3),
    .up_tx_wr (up_tx_wr_3),
    .up_tx_wdata (up_tx_wdata_3),
    .up_tx_rdata (up_tx_rdata_3),
    .up_tx_ready (up_tx_ready_3));
  end else begin
  assign rx_out_clk_3 = 1'd0;
  assign rx_charisk_3 = 4'd0;
  assign rx_disperr_3 = 4'd0;
  assign rx_notintable_3 = 4'd0;
  assign rx_data_3 = 32'd0;
  assign tx_3_p = 1'd0;
  assign tx_3_n = 1'd0;
  assign tx_out_clk_3 = 1'd0;
  assign up_es_rdata_3 = 16'd0;
  assign up_es_ready_3 = 1'd0;
  assign up_rx_pll_locked_3 = 1'd0;
  assign up_rx_rst_done_3 = 1'd0;
  assign up_rx_rdata_3 = 16'd0;
  assign up_rx_ready_3 = 1'd0;
  assign up_tx_pll_locked_3 = 1'd0;
  assign up_tx_rst_done_3 = 1'd0;
  assign up_tx_rdata_3 = 16'd0;
  assign up_tx_ready_3 = 1'd0;
  end
  endgenerate

  generate
  if (NUM_OF_LANES >= 5) begin
  util_adxcvr_xcm #(
    .XCVR_TYPE (XCVR_TYPE),
    .QPLL_REFCLK_DIV (QPLL_REFCLK_DIV),
    .QPLL_FBDIV_RATIO (QPLL_FBDIV_RATIO),
    .POR_CFG (POR_CFG),
    .PPF0_CFG (PPF0_CFG),
    .PPF1_CFG (PPF1_CFG),
    .QPLL_CFG (QPLL_CFG),
    .QPLL_FBDIV (QPLL_FBDIV),
    .QPLL_CFG0 (QPLL_CFG0),
    .QPLL_CFG1 (QPLL_CFG1),
    .QPLL_CFG1_G3 (QPLL_CFG1_G3),
    .QPLL_CFG2 (QPLL_CFG2),
    .QPLL_CFG2_G3 (QPLL_CFG2_G3),
    .QPLL_CFG3 (QPLL_CFG3),
    .QPLL_CP_G3 (QPLL_CP_G3),
    .QPLL_LPF (QPLL_LPF),
    .QPLL_CP (QPLL_CP),
    .QPLL_CFG4 (QPLL_CFG4)
  ) i_xcm_4 (
    .qpll_ref_clk (qpll_ref_clk_4),
    .qpll_sel (qpll_sel_4),
    .qpll2ch_clk (qpll2ch_clk_4),
    .qpll2ch_ref_clk (qpll2ch_ref_clk_4),
    .qpll2ch_locked (qpll2ch_locked_4),
    .qpll1_clk (qpll1_clk_4),
    .qpll1_ref_clk (qpll1_ref_clk_4),
    .qpll1_locked (qpll1_locked_4),
    .up_rstn (up_rstn),
    .up_clk (up_clk),
    .up_qpll_rst (up_qpll_rst_4),
    .up_cm_enb (up_cm_enb_4),
    .up_cm_addr (up_cm_addr_4),
    .up_cm_wr (up_cm_wr_4),
    .up_cm_wdata (up_cm_wdata_4),
    .up_cm_rdata (up_cm_rdata_4),
    .up_cm_ready (up_cm_ready_4));
  end else begin
  assign qpll2ch_clk_4 = 1'd0;
  assign qpll2ch_ref_clk_4 = 1'd0;
  assign qpll2ch_locked_4 = 1'd0;
  assign qpll1_clk_4 = 1'd0;
  assign qpll1_ref_clk_4 = 1'd0;
  assign qpll1_locked_4 = 1'd0;
  assign up_cm_rdata_4 = 16'd0;
  assign up_cm_ready_4 = 1'd0;
  end
  endgenerate

  generate
  if (NUM_OF_LANES >= 5) begin
  util_adxcvr_xch #(
    .XCVR_TYPE (XCVR_TYPE),
    .LINK_MODE (LINK_MODE),
    .DATA_PATH_WIDTH (DATA_PATH_WIDTH),
    .CPLL_FBDIV (CPLL_FBDIV),
    .CPLL_FBDIV_4_5 (CPLL_FBDIV_4_5),
    .CPLL_CFG0 (CPLL_CFG0),
    .CPLL_CFG1 (CPLL_CFG1),
    .CPLL_CFG2 (CPLL_CFG2),
    .CPLL_CFG3 (CPLL_CFG3),
    .TX_OUT_DIV (TX_OUT_DIV),
    .TX_CLK25_DIV (TX_CLK25_DIV),
    .TX_POLARITY ((TX_LANE_INVERT >> 4) & 1),
    .TX_PI_BIASSET (TX_PI_BIASSET),
    .TXPI_CFG (TXPI_CFG),
    .A_TXDIFFCTRL (A_TXDIFFCTRL),
    .RX_OUT_DIV (RX_OUT_DIV),
    .RX_CLK25_DIV (RX_CLK25_DIV),
    .RX_DFE_LPM_CFG (RX_DFE_LPM_CFG),
    .RX_PMA_CFG (RX_PMA_CFG),
    .RX_CDR_CFG (RX_CDR_CFG),
    .RX_POLARITY ((RX_LANE_INVERT >> 4) & 1),
    .RXCDR_CFG0 (RXCDR_CFG0),
    .RXCDR_CFG2 (RXCDR_CFG2),
    .RXCDR_CFG2_GEN2 (RXCDR_CFG2_GEN2),
    .RXCDR_CFG2_GEN4 (RXCDR_CFG2_GEN4),
    .RXCDR_CFG3 (RXCDR_CFG3),
    .RXCDR_CFG3_GEN2 (RXCDR_CFG3_GEN2),
    .RXCDR_CFG3_GEN3 (RXCDR_CFG3_GEN3),
    .RXCDR_CFG3_GEN4 (RXCDR_CFG3_GEN4),
    .RXDFE_KH_CFG2 (RXDFE_KH_CFG2),
    .RXDFE_KH_CFG3 (RXDFE_KH_CFG3),
    .RX_WIDEMODE_CDR (RX_WIDEMODE_CDR),
    .RX_XMODE_SEL (RX_XMODE_SEL),
    .TXDRV_FREQBAND (TXDRV_FREQBAND),
    .TXFE_CFG0 (TXFE_CFG0),
    .TXFE_CFG1 (TXFE_CFG1),
    .TXFE_CFG2 (TXFE_CFG2),
    .TXFE_CFG3 (TXFE_CFG3),
    .TXPI_CFG0 (TXPI_CFG0),
    .TXPI_CFG1 (TXPI_CFG1),
    .TXSWBST_EN (TXSWBST_EN),
    .CH_HSPMUX (CH_HSPMUX),
    .PREIQ_FREQ_BST (PREIQ_FREQ_BST),
    .RXPI_CFG0 (RXPI_CFG0),
    .RXPI_CFG1 (RXPI_CFG1),
    .RTX_BUF_CML_CTRL (RTX_BUF_CML_CTRL)
  ) i_xch_4 (
    .qpll2ch_clk (qpll2ch_clk_4),
    .qpll2ch_ref_clk (qpll2ch_ref_clk_4),
    .qpll2ch_locked (qpll2ch_locked_4),
    .qpll1_clk (qpll1_clk_4),
    .qpll1_ref_clk (qpll1_ref_clk_4),
    .qpll1_locked (qpll1_locked_4),
    .cpll_ref_clk (cpll_ref_clk_4),
    .up_cpll_rst (up_cpll_rst_4),
    .rx_p (rx_4_p),
    .rx_n (rx_4_n),
    .rx_out_clk (rx_out_clk_4),
    .rx_out_clk_div2 (rx_out_clk_div2_4),
    .rx_clk (rx_clk_4),
    .rx_clk_2x (rx_clk_2x_4),
    .rx_charisk (rx_charisk_4),
    .rx_disperr (rx_disperr_4),
    .rx_notintable (rx_notintable_4),
    .rx_data (rx_data_4),
    .rx_calign (rx_calign_4),
    .rx_header(rx_header_4),
    .rx_block_sync(rx_block_sync_4),
    .tx_p (tx_4_p),
    .tx_n (tx_4_n),
    .tx_out_clk (tx_out_clk_4),
    .tx_out_clk_div2 (tx_out_clk_div2_4),
    .tx_clk (tx_clk_4),
    .tx_clk_2x (tx_clk_2x_4),
    .tx_charisk (tx_charisk_4),
    .tx_data (tx_data_4),
    .tx_header (tx_header_4),
    .up_rstn (up_rstn),
    .up_clk (up_clk),
    .up_es_enb (up_es_enb_4),
    .up_es_addr (up_es_addr_4),
    .up_es_wr (up_es_wr_4),
    .up_es_wdata (up_es_wdata_4),
    .up_es_rdata (up_es_rdata_4),
    .up_es_ready (up_es_ready_4),
    .up_es_reset (up_es_reset_4),
    .up_rx_pll_locked (up_rx_pll_locked_4),
    .up_rx_rst (up_rx_rst_4),
    .up_rx_user_ready (up_rx_user_ready_4),
    .up_rx_rst_done (up_rx_rst_done_4),
    .up_rx_prbssel (up_rx_prbssel_4),
    .up_rx_prbscntreset (up_rx_prbscntreset_4),
    .up_rx_prbserr (up_rx_prbserr_4),
    .up_rx_prbslocked (up_rx_prbslocked_4),
    .up_rx_bufstatus (up_rx_bufstatus_4),
    .up_rx_bufstatus_rst (up_rx_bufstatus_rst_4),
    .up_rx_lpm_dfe_n (up_rx_lpm_dfe_n_4),
    .up_rx_rate (up_rx_rate_4),
    .up_rx_sys_clk_sel (up_rx_sys_clk_sel_4),
    .up_rx_out_clk_sel (up_rx_out_clk_sel_4),
    .up_rx_enb (up_rx_enb_4),
    .up_rx_addr (up_rx_addr_4),
    .up_rx_wr (up_rx_wr_4),
    .up_rx_wdata (up_rx_wdata_4),
    .up_rx_rdata (up_rx_rdata_4),
    .up_rx_ready (up_rx_ready_4),
    .up_tx_pll_locked (up_tx_pll_locked_4),
    .up_tx_rst (up_tx_rst_4),
    .up_tx_user_ready (up_tx_user_ready_4),
    .up_tx_rst_done (up_tx_rst_done_4),
    .up_tx_bufstatus (up_tx_bufstatus_4),
    .up_tx_prbsforceerr (up_tx_prbsforceerr_4),
    .up_tx_prbssel (up_tx_prbssel_4),
    .up_tx_lpm_dfe_n (up_tx_lpm_dfe_n_4),
    .up_tx_rate (up_tx_rate_4),
    .up_tx_sys_clk_sel (up_tx_sys_clk_sel_4),
    .up_tx_out_clk_sel (up_tx_out_clk_sel_4),
    .up_tx_diffctrl (up_tx_diffctrl_4),
    .up_tx_postcursor (up_tx_postcursor_4),
    .up_tx_precursor (up_tx_precursor_4),
    .up_tx_enb (up_tx_enb_4),
    .up_tx_addr (up_tx_addr_4),
    .up_tx_wr (up_tx_wr_4),
    .up_tx_wdata (up_tx_wdata_4),
    .up_tx_rdata (up_tx_rdata_4),
    .up_tx_ready (up_tx_ready_4));
  end else begin
  assign rx_out_clk_4 = 1'd0;
  assign rx_charisk_4 = 4'd0;
  assign rx_disperr_4 = 4'd0;
  assign rx_notintable_4 = 4'd0;
  assign rx_data_4 = 32'd0;
  assign tx_4_p = 1'd0;
  assign tx_4_n = 1'd0;
  assign tx_out_clk_4 = 1'd0;
  assign up_es_rdata_4 = 16'd0;
  assign up_es_ready_4 = 1'd0;
  assign up_rx_pll_locked_4 = 1'd0;
  assign up_rx_rst_done_4 = 1'd0;
  assign up_rx_rdata_4 = 16'd0;
  assign up_rx_ready_4 = 1'd0;
  assign up_tx_pll_locked_4 = 1'd0;
  assign up_tx_rst_done_4 = 1'd0;
  assign up_tx_rdata_4 = 16'd0;
  assign up_tx_ready_4 = 1'd0;
  end
  endgenerate

  generate
  if (NUM_OF_LANES >= 6) begin
  util_adxcvr_xch #(
    .XCVR_TYPE (XCVR_TYPE),
    .LINK_MODE (LINK_MODE),
    .DATA_PATH_WIDTH (DATA_PATH_WIDTH),
    .CPLL_FBDIV (CPLL_FBDIV),
    .CPLL_FBDIV_4_5 (CPLL_FBDIV_4_5),
    .CPLL_CFG0 (CPLL_CFG0),
    .CPLL_CFG1 (CPLL_CFG1),
    .CPLL_CFG2 (CPLL_CFG2),
    .CPLL_CFG3 (CPLL_CFG3),
    .TX_OUT_DIV (TX_OUT_DIV),
    .TX_CLK25_DIV (TX_CLK25_DIV),
    .TX_POLARITY ((TX_LANE_INVERT >> 5) & 1),
    .TX_PI_BIASSET (TX_PI_BIASSET),
    .TXPI_CFG (TXPI_CFG),
    .A_TXDIFFCTRL (A_TXDIFFCTRL),
    .RX_OUT_DIV (RX_OUT_DIV),
    .RX_CLK25_DIV (RX_CLK25_DIV),
    .RX_DFE_LPM_CFG (RX_DFE_LPM_CFG),
    .RX_PMA_CFG (RX_PMA_CFG),
    .RX_CDR_CFG (RX_CDR_CFG),
    .RX_POLARITY ((RX_LANE_INVERT >> 5) & 1),
    .RXCDR_CFG0 (RXCDR_CFG0),
    .RXCDR_CFG2 (RXCDR_CFG2),
    .RXCDR_CFG2_GEN2 (RXCDR_CFG2_GEN2),
    .RXCDR_CFG2_GEN4 (RXCDR_CFG2_GEN4),
    .RXCDR_CFG3 (RXCDR_CFG3),
    .RXCDR_CFG3_GEN2 (RXCDR_CFG3_GEN2),
    .RXCDR_CFG3_GEN3 (RXCDR_CFG3_GEN3),
    .RXCDR_CFG3_GEN4 (RXCDR_CFG3_GEN4),
    .RXDFE_KH_CFG2 (RXDFE_KH_CFG2),
    .RXDFE_KH_CFG3 (RXDFE_KH_CFG3),
    .RX_WIDEMODE_CDR (RX_WIDEMODE_CDR),
    .RX_XMODE_SEL (RX_XMODE_SEL),
    .TXDRV_FREQBAND (TXDRV_FREQBAND),
    .TXFE_CFG0 (TXFE_CFG0),
    .TXFE_CFG1 (TXFE_CFG1),
    .TXFE_CFG2 (TXFE_CFG2),
    .TXFE_CFG3 (TXFE_CFG3),
    .TXPI_CFG0 (TXPI_CFG0),
    .TXPI_CFG1 (TXPI_CFG1),
    .TXSWBST_EN (TXSWBST_EN),
    .CH_HSPMUX (CH_HSPMUX),
    .PREIQ_FREQ_BST (PREIQ_FREQ_BST),
    .RXPI_CFG0 (RXPI_CFG0),
    .RXPI_CFG1 (RXPI_CFG1),
    .RTX_BUF_CML_CTRL (RTX_BUF_CML_CTRL)
  ) i_xch_5 (
    .qpll2ch_clk (qpll2ch_clk_4),
    .qpll2ch_ref_clk (qpll2ch_ref_clk_4),
    .qpll2ch_locked (qpll2ch_locked_4),
    .qpll1_clk (qpll1_clk_4),
    .qpll1_ref_clk (qpll1_ref_clk_4),
    .qpll1_locked (qpll1_locked_4),
    .cpll_ref_clk (cpll_ref_clk_5),
    .up_cpll_rst (up_cpll_rst_5),
    .rx_p (rx_5_p),
    .rx_n (rx_5_n),
    .rx_out_clk (rx_out_clk_5),
    .rx_out_clk_div2 (rx_out_clk_div2_5),
    .rx_clk (rx_clk_5),
    .rx_clk_2x (rx_clk_2x_5),
    .rx_charisk (rx_charisk_5),
    .rx_disperr (rx_disperr_5),
    .rx_notintable (rx_notintable_5),
    .rx_data (rx_data_5),
    .rx_calign (rx_calign_5),
    .rx_header(rx_header_5),
    .rx_block_sync(rx_block_sync_5),
    .tx_p (tx_5_p),
    .tx_n (tx_5_n),
    .tx_out_clk (tx_out_clk_5),
    .tx_out_clk_div2 (tx_out_clk_div2_5),
    .tx_clk (tx_clk_5),
    .tx_clk_2x (tx_clk_2x_5),
    .tx_charisk (tx_charisk_5),
    .tx_data (tx_data_5),
    .tx_header (tx_header_5),
    .up_rstn (up_rstn),
    .up_clk (up_clk),
    .up_es_enb (up_es_enb_5),
    .up_es_addr (up_es_addr_5),
    .up_es_wr (up_es_wr_5),
    .up_es_wdata (up_es_wdata_5),
    .up_es_rdata (up_es_rdata_5),
    .up_es_ready (up_es_ready_5),
    .up_es_reset (up_es_reset_5),
    .up_rx_pll_locked (up_rx_pll_locked_5),
    .up_rx_rst (up_rx_rst_5),
    .up_rx_user_ready (up_rx_user_ready_5),
    .up_rx_rst_done (up_rx_rst_done_5),
    .up_rx_prbssel (up_rx_prbssel_5),
    .up_rx_prbscntreset (up_rx_prbscntreset_5),
    .up_rx_prbserr (up_rx_prbserr_5),
    .up_rx_prbslocked (up_rx_prbslocked_5),
    .up_rx_bufstatus (up_rx_bufstatus_5),
    .up_rx_bufstatus_rst (up_rx_bufstatus_rst_5),
    .up_rx_lpm_dfe_n (up_rx_lpm_dfe_n_5),
    .up_rx_rate (up_rx_rate_5),
    .up_rx_sys_clk_sel (up_rx_sys_clk_sel_5),
    .up_rx_out_clk_sel (up_rx_out_clk_sel_5),
    .up_rx_enb (up_rx_enb_5),
    .up_rx_addr (up_rx_addr_5),
    .up_rx_wr (up_rx_wr_5),
    .up_rx_wdata (up_rx_wdata_5),
    .up_rx_rdata (up_rx_rdata_5),
    .up_rx_ready (up_rx_ready_5),
    .up_tx_pll_locked (up_tx_pll_locked_5),
    .up_tx_rst (up_tx_rst_5),
    .up_tx_user_ready (up_tx_user_ready_5),
    .up_tx_rst_done (up_tx_rst_done_5),
    .up_tx_bufstatus (up_tx_bufstatus_5),
    .up_tx_prbsforceerr (up_tx_prbsforceerr_5),
    .up_tx_prbssel (up_tx_prbssel_5),
    .up_tx_lpm_dfe_n (up_tx_lpm_dfe_n_5),
    .up_tx_rate (up_tx_rate_5),
    .up_tx_sys_clk_sel (up_tx_sys_clk_sel_5),
    .up_tx_out_clk_sel (up_tx_out_clk_sel_5),
    .up_tx_diffctrl (up_tx_diffctrl_5),
    .up_tx_postcursor (up_tx_postcursor_5),
    .up_tx_precursor (up_tx_precursor_5),
    .up_tx_enb (up_tx_enb_5),
    .up_tx_addr (up_tx_addr_5),
    .up_tx_wr (up_tx_wr_5),
    .up_tx_wdata (up_tx_wdata_5),
    .up_tx_rdata (up_tx_rdata_5),
    .up_tx_ready (up_tx_ready_5));
  end else begin
  assign rx_out_clk_5 = 1'd0;
  assign rx_charisk_5 = 4'd0;
  assign rx_disperr_5 = 4'd0;
  assign rx_notintable_5 = 4'd0;
  assign rx_data_5 = 32'd0;
  assign tx_5_p = 1'd0;
  assign tx_5_n = 1'd0;
  assign tx_out_clk_5 = 1'd0;
  assign up_es_rdata_5 = 16'd0;
  assign up_es_ready_5 = 1'd0;
  assign up_rx_pll_locked_5 = 1'd0;
  assign up_rx_rst_done_5 = 1'd0;
  assign up_rx_rdata_5 = 16'd0;
  assign up_rx_ready_5 = 1'd0;
  assign up_tx_pll_locked_5 = 1'd0;
  assign up_tx_rst_done_5 = 1'd0;
  assign up_tx_rdata_5 = 16'd0;
  assign up_tx_ready_5 = 1'd0;
  end
  endgenerate

  generate
  if (NUM_OF_LANES >= 7) begin
  util_adxcvr_xch #(
    .XCVR_TYPE (XCVR_TYPE),
    .LINK_MODE (LINK_MODE),
    .DATA_PATH_WIDTH (DATA_PATH_WIDTH),
    .CPLL_FBDIV (CPLL_FBDIV),
    .CPLL_FBDIV_4_5 (CPLL_FBDIV_4_5),
    .CPLL_CFG0 (CPLL_CFG0),
    .CPLL_CFG1 (CPLL_CFG1),
    .CPLL_CFG2 (CPLL_CFG2),
    .CPLL_CFG3 (CPLL_CFG3),
    .TX_OUT_DIV (TX_OUT_DIV),
    .TX_CLK25_DIV (TX_CLK25_DIV),
    .TX_POLARITY ((TX_LANE_INVERT >> 6) & 1),
    .TX_PI_BIASSET (TX_PI_BIASSET),
    .TXPI_CFG (TXPI_CFG),
    .A_TXDIFFCTRL (A_TXDIFFCTRL),
    .RX_OUT_DIV (RX_OUT_DIV),
    .RX_CLK25_DIV (RX_CLK25_DIV),
    .RX_DFE_LPM_CFG (RX_DFE_LPM_CFG),
    .RX_PMA_CFG (RX_PMA_CFG),
    .RX_CDR_CFG (RX_CDR_CFG),
    .RX_POLARITY ((RX_LANE_INVERT >> 6) & 1),
    .RXCDR_CFG0 (RXCDR_CFG0),
    .RXCDR_CFG2 (RXCDR_CFG2),
    .RXCDR_CFG2_GEN2 (RXCDR_CFG2_GEN2),
    .RXCDR_CFG2_GEN4 (RXCDR_CFG2_GEN4),
    .RXCDR_CFG3 (RXCDR_CFG3),
    .RXCDR_CFG3_GEN2 (RXCDR_CFG3_GEN2),
    .RXCDR_CFG3_GEN3 (RXCDR_CFG3_GEN3),
    .RXCDR_CFG3_GEN4 (RXCDR_CFG3_GEN4),
    .RXDFE_KH_CFG2 (RXDFE_KH_CFG2),
    .RXDFE_KH_CFG3 (RXDFE_KH_CFG3),
    .RX_WIDEMODE_CDR (RX_WIDEMODE_CDR),
    .RX_XMODE_SEL (RX_XMODE_SEL),
    .TXDRV_FREQBAND (TXDRV_FREQBAND),
    .TXFE_CFG0 (TXFE_CFG0),
    .TXFE_CFG1 (TXFE_CFG1),
    .TXFE_CFG2 (TXFE_CFG2),
    .TXFE_CFG3 (TXFE_CFG3),
    .TXPI_CFG0 (TXPI_CFG0),
    .TXPI_CFG1 (TXPI_CFG1),
    .TXSWBST_EN (TXSWBST_EN),
    .CH_HSPMUX (CH_HSPMUX),
    .PREIQ_FREQ_BST (PREIQ_FREQ_BST),
    .RXPI_CFG0 (RXPI_CFG0),
    .RXPI_CFG1 (RXPI_CFG1),
    .RTX_BUF_CML_CTRL (RTX_BUF_CML_CTRL)
  ) i_xch_6 (
    .qpll2ch_clk (qpll2ch_clk_4),
    .qpll2ch_ref_clk (qpll2ch_ref_clk_4),
    .qpll2ch_locked (qpll2ch_locked_4),
    .qpll1_clk (qpll1_clk_4),
    .qpll1_ref_clk (qpll1_ref_clk_4),
    .qpll1_locked (qpll1_locked_4),
    .cpll_ref_clk (cpll_ref_clk_6),
    .up_cpll_rst (up_cpll_rst_6),
    .rx_p (rx_6_p),
    .rx_n (rx_6_n),
    .rx_out_clk (rx_out_clk_6),
    .rx_out_clk_div2 (rx_out_clk_div2_6),
    .rx_clk (rx_clk_6),
    .rx_clk_2x (rx_clk_2x_6),
    .rx_charisk (rx_charisk_6),
    .rx_disperr (rx_disperr_6),
    .rx_notintable (rx_notintable_6),
    .rx_data (rx_data_6),
    .rx_calign (rx_calign_6),
    .rx_header(rx_header_6),
    .rx_block_sync(rx_block_sync_6),
    .tx_p (tx_6_p),
    .tx_n (tx_6_n),
    .tx_out_clk (tx_out_clk_6),
    .tx_out_clk_div2 (tx_out_clk_div2_6),
    .tx_clk (tx_clk_6),
    .tx_clk_2x (tx_clk_2x_6),
    .tx_charisk (tx_charisk_6),
    .tx_data (tx_data_6),
    .tx_header (tx_header_6),
    .up_rstn (up_rstn),
    .up_clk (up_clk),
    .up_es_enb (up_es_enb_6),
    .up_es_addr (up_es_addr_6),
    .up_es_wr (up_es_wr_6),
    .up_es_wdata (up_es_wdata_6),
    .up_es_rdata (up_es_rdata_6),
    .up_es_ready (up_es_ready_6),
    .up_es_reset (up_es_reset_6),
    .up_rx_pll_locked (up_rx_pll_locked_6),
    .up_rx_rst (up_rx_rst_6),
    .up_rx_user_ready (up_rx_user_ready_6),
    .up_rx_rst_done (up_rx_rst_done_6),
    .up_rx_prbssel (up_rx_prbssel_6),
    .up_rx_prbscntreset (up_rx_prbscntreset_6),
    .up_rx_prbserr (up_rx_prbserr_6),
    .up_rx_prbslocked (up_rx_prbslocked_6),
    .up_rx_bufstatus (up_rx_bufstatus_6),
    .up_rx_bufstatus_rst (up_rx_bufstatus_rst_6),
    .up_rx_lpm_dfe_n (up_rx_lpm_dfe_n_6),
    .up_rx_rate (up_rx_rate_6),
    .up_rx_sys_clk_sel (up_rx_sys_clk_sel_6),
    .up_rx_out_clk_sel (up_rx_out_clk_sel_6),
    .up_rx_enb (up_rx_enb_6),
    .up_rx_addr (up_rx_addr_6),
    .up_rx_wr (up_rx_wr_6),
    .up_rx_wdata (up_rx_wdata_6),
    .up_rx_rdata (up_rx_rdata_6),
    .up_rx_ready (up_rx_ready_6),
    .up_tx_pll_locked (up_tx_pll_locked_6),
    .up_tx_rst (up_tx_rst_6),
    .up_tx_user_ready (up_tx_user_ready_6),
    .up_tx_rst_done (up_tx_rst_done_6),
    .up_tx_bufstatus (up_tx_bufstatus_6),
    .up_tx_prbsforceerr (up_tx_prbsforceerr_6),
    .up_tx_prbssel (up_tx_prbssel_6),
    .up_tx_lpm_dfe_n (up_tx_lpm_dfe_n_6),
    .up_tx_rate (up_tx_rate_6),
    .up_tx_sys_clk_sel (up_tx_sys_clk_sel_6),
    .up_tx_out_clk_sel (up_tx_out_clk_sel_6),
    .up_tx_diffctrl (up_tx_diffctrl_6),
    .up_tx_postcursor (up_tx_postcursor_6),
    .up_tx_precursor (up_tx_precursor_6),
    .up_tx_enb (up_tx_enb_6),
    .up_tx_addr (up_tx_addr_6),
    .up_tx_wr (up_tx_wr_6),
    .up_tx_wdata (up_tx_wdata_6),
    .up_tx_rdata (up_tx_rdata_6),
    .up_tx_ready (up_tx_ready_6));
  end else begin
  assign rx_out_clk_6 = 1'd0;
  assign rx_charisk_6 = 4'd0;
  assign rx_disperr_6 = 4'd0;
  assign rx_notintable_6 = 4'd0;
  assign rx_data_6 = 32'd0;
  assign tx_6_p = 1'd0;
  assign tx_6_n = 1'd0;
  assign tx_out_clk_6 = 1'd0;
  assign up_es_rdata_6 = 16'd0;
  assign up_es_ready_6 = 1'd0;
  assign up_rx_pll_locked_6 = 1'd0;
  assign up_rx_rst_done_6 = 1'd0;
  assign up_rx_rdata_6 = 16'd0;
  assign up_rx_ready_6 = 1'd0;
  assign up_tx_pll_locked_6 = 1'd0;
  assign up_tx_rst_done_6 = 1'd0;
  assign up_tx_rdata_6 = 16'd0;
  assign up_tx_ready_6 = 1'd0;
  end
  endgenerate

  generate
  if (NUM_OF_LANES >= 8) begin
  util_adxcvr_xch #(
    .XCVR_TYPE (XCVR_TYPE),
    .LINK_MODE (LINK_MODE),
    .DATA_PATH_WIDTH (DATA_PATH_WIDTH),
    .CPLL_FBDIV (CPLL_FBDIV),
    .CPLL_FBDIV_4_5 (CPLL_FBDIV_4_5),
    .CPLL_CFG0 (CPLL_CFG0),
    .CPLL_CFG1 (CPLL_CFG1),
    .CPLL_CFG2 (CPLL_CFG2),
    .CPLL_CFG3 (CPLL_CFG3),
    .TX_OUT_DIV (TX_OUT_DIV),
    .TX_CLK25_DIV (TX_CLK25_DIV),
    .TX_POLARITY ((TX_LANE_INVERT >> 7) & 1),
    .TX_PI_BIASSET (TX_PI_BIASSET),
    .TXPI_CFG (TXPI_CFG),
    .A_TXDIFFCTRL (A_TXDIFFCTRL),
    .RX_OUT_DIV (RX_OUT_DIV),
    .RX_CLK25_DIV (RX_CLK25_DIV),
    .RX_DFE_LPM_CFG (RX_DFE_LPM_CFG),
    .RX_PMA_CFG (RX_PMA_CFG),
    .RX_CDR_CFG (RX_CDR_CFG),
    .RX_POLARITY ((RX_LANE_INVERT >> 7) & 1),
    .RXCDR_CFG0 (RXCDR_CFG0),
    .RXCDR_CFG2 (RXCDR_CFG2),
    .RXCDR_CFG2_GEN2 (RXCDR_CFG2_GEN2),
    .RXCDR_CFG2_GEN4 (RXCDR_CFG2_GEN4),
    .RXCDR_CFG3 (RXCDR_CFG3),
    .RXCDR_CFG3_GEN2 (RXCDR_CFG3_GEN2),
    .RXCDR_CFG3_GEN3 (RXCDR_CFG3_GEN3),
    .RXCDR_CFG3_GEN4 (RXCDR_CFG3_GEN4),
    .RXDFE_KH_CFG2 (RXDFE_KH_CFG2),
    .RXDFE_KH_CFG3 (RXDFE_KH_CFG3),
    .RX_WIDEMODE_CDR (RX_WIDEMODE_CDR),
    .RX_XMODE_SEL (RX_XMODE_SEL),
    .TXDRV_FREQBAND (TXDRV_FREQBAND),
    .TXFE_CFG0 (TXFE_CFG0),
    .TXFE_CFG1 (TXFE_CFG1),
    .TXFE_CFG2 (TXFE_CFG2),
    .TXFE_CFG3 (TXFE_CFG3),
    .TXPI_CFG0 (TXPI_CFG0),
    .TXPI_CFG1 (TXPI_CFG1),
    .TXSWBST_EN (TXSWBST_EN),
    .CH_HSPMUX (CH_HSPMUX),
    .PREIQ_FREQ_BST (PREIQ_FREQ_BST),
    .RXPI_CFG0 (RXPI_CFG0),
    .RXPI_CFG1 (RXPI_CFG1),
    .RTX_BUF_CML_CTRL (RTX_BUF_CML_CTRL)
  ) i_xch_7 (
    .qpll2ch_clk (qpll2ch_clk_4),
    .qpll2ch_ref_clk (qpll2ch_ref_clk_4),
    .qpll2ch_locked (qpll2ch_locked_4),
    .qpll1_clk (qpll1_clk_4),
    .qpll1_ref_clk (qpll1_ref_clk_4),
    .qpll1_locked (qpll1_locked_4),
    .cpll_ref_clk (cpll_ref_clk_7),
    .up_cpll_rst (up_cpll_rst_7),
    .rx_p (rx_7_p),
    .rx_n (rx_7_n),
    .rx_out_clk (rx_out_clk_7),
    .rx_out_clk_div2 (rx_out_clk_div2_7),
    .rx_clk (rx_clk_7),
    .rx_clk_2x (rx_clk_2x_7),
    .rx_charisk (rx_charisk_7),
    .rx_disperr (rx_disperr_7),
    .rx_notintable (rx_notintable_7),
    .rx_data (rx_data_7),
    .rx_calign (rx_calign_7),
    .rx_header(rx_header_7),
    .rx_block_sync(rx_block_sync_7),
    .tx_p (tx_7_p),
    .tx_n (tx_7_n),
    .tx_out_clk (tx_out_clk_7),
    .tx_out_clk_div2 (tx_out_clk_div2_7),
    .tx_clk (tx_clk_7),
    .tx_clk_2x (tx_clk_2x_7),
    .tx_charisk (tx_charisk_7),
    .tx_data (tx_data_7),
    .tx_header (tx_header_7),
    .up_rstn (up_rstn),
    .up_clk (up_clk),
    .up_es_enb (up_es_enb_7),
    .up_es_addr (up_es_addr_7),
    .up_es_wr (up_es_wr_7),
    .up_es_wdata (up_es_wdata_7),
    .up_es_rdata (up_es_rdata_7),
    .up_es_ready (up_es_ready_7),
    .up_es_reset (up_es_reset_7),
    .up_rx_pll_locked (up_rx_pll_locked_7),
    .up_rx_rst (up_rx_rst_7),
    .up_rx_user_ready (up_rx_user_ready_7),
    .up_rx_rst_done (up_rx_rst_done_7),
    .up_rx_prbssel (up_rx_prbssel_7),
    .up_rx_prbscntreset (up_rx_prbscntreset_7),
    .up_rx_prbserr (up_rx_prbserr_7),
    .up_rx_prbslocked (up_rx_prbslocked_7),
    .up_rx_bufstatus (up_rx_bufstatus_7),
    .up_rx_bufstatus_rst (up_rx_bufstatus_rst_7),
    .up_rx_lpm_dfe_n (up_rx_lpm_dfe_n_7),
    .up_rx_rate (up_rx_rate_7),
    .up_rx_sys_clk_sel (up_rx_sys_clk_sel_7),
    .up_rx_out_clk_sel (up_rx_out_clk_sel_7),
    .up_rx_enb (up_rx_enb_7),
    .up_rx_addr (up_rx_addr_7),
    .up_rx_wr (up_rx_wr_7),
    .up_rx_wdata (up_rx_wdata_7),
    .up_rx_rdata (up_rx_rdata_7),
    .up_rx_ready (up_rx_ready_7),
    .up_tx_pll_locked (up_tx_pll_locked_7),
    .up_tx_rst (up_tx_rst_7),
    .up_tx_user_ready (up_tx_user_ready_7),
    .up_tx_rst_done (up_tx_rst_done_7),
    .up_tx_bufstatus (up_tx_bufstatus_7),
    .up_tx_prbsforceerr (up_tx_prbsforceerr_7),
    .up_tx_prbssel (up_tx_prbssel_7),
    .up_tx_lpm_dfe_n (up_tx_lpm_dfe_n_7),
    .up_tx_rate (up_tx_rate_7),
    .up_tx_sys_clk_sel (up_tx_sys_clk_sel_7),
    .up_tx_out_clk_sel (up_tx_out_clk_sel_7),
    .up_tx_diffctrl (up_tx_diffctrl_7),
    .up_tx_postcursor (up_tx_postcursor_7),
    .up_tx_precursor (up_tx_precursor_7),
    .up_tx_enb (up_tx_enb_7),
    .up_tx_addr (up_tx_addr_7),
    .up_tx_wr (up_tx_wr_7),
    .up_tx_wdata (up_tx_wdata_7),
    .up_tx_rdata (up_tx_rdata_7),
    .up_tx_ready (up_tx_ready_7));
  end else begin
  assign rx_out_clk_7 = 1'd0;
  assign rx_charisk_7 = 4'd0;
  assign rx_disperr_7 = 4'd0;
  assign rx_notintable_7 = 4'd0;
  assign rx_data_7 = 32'd0;
  assign tx_7_p = 1'd0;
  assign tx_7_n = 1'd0;
  assign tx_out_clk_7 = 1'd0;
  assign up_es_rdata_7 = 16'd0;
  assign up_es_ready_7 = 1'd0;
  assign up_rx_pll_locked_7 = 1'd0;
  assign up_rx_rst_done_7 = 1'd0;
  assign up_rx_rdata_7 = 16'd0;
  assign up_rx_ready_7 = 1'd0;
  assign up_tx_pll_locked_7 = 1'd0;
  assign up_tx_rst_done_7 = 1'd0;
  assign up_tx_rdata_7 = 16'd0;
  assign up_tx_ready_7 = 1'd0;
  end
  endgenerate

  generate
  if (NUM_OF_LANES >= 9) begin
  util_adxcvr_xcm #(
    .XCVR_TYPE (XCVR_TYPE),
    .QPLL_REFCLK_DIV (QPLL_REFCLK_DIV),
    .QPLL_FBDIV_RATIO (QPLL_FBDIV_RATIO),
    .POR_CFG (POR_CFG),
    .PPF0_CFG (PPF0_CFG),
    .PPF1_CFG (PPF1_CFG),
    .QPLL_CFG (QPLL_CFG),
    .QPLL_FBDIV (QPLL_FBDIV),
    .QPLL_CFG0 (QPLL_CFG0),
    .QPLL_CFG1 (QPLL_CFG1),
    .QPLL_CFG1_G3 (QPLL_CFG1_G3),
    .QPLL_CFG2 (QPLL_CFG2),
    .QPLL_CFG2_G3 (QPLL_CFG2_G3),
    .QPLL_CFG3 (QPLL_CFG3),
    .QPLL_CP_G3 (QPLL_CP_G3),
    .QPLL_LPF (QPLL_LPF),
    .QPLL_CP (QPLL_CP),
    .QPLL_CFG4 (QPLL_CFG4)
  ) i_xcm_8 (
    .qpll_ref_clk (qpll_ref_clk_8),
    .qpll_sel (qpll_sel_8),
    .qpll2ch_clk (qpll2ch_clk_8),
    .qpll2ch_ref_clk (qpll2ch_ref_clk_8),
    .qpll2ch_locked (qpll2ch_locked_8),
    .qpll1_clk (qpll1_clk_8),
    .qpll1_ref_clk (qpll1_ref_clk_8),
    .qpll1_locked (qpll1_locked_8),
    .up_rstn (up_rstn),
    .up_clk (up_clk),
    .up_qpll_rst (up_qpll_rst_8),
    .up_cm_enb (up_cm_enb_8),
    .up_cm_addr (up_cm_addr_8),
    .up_cm_wr (up_cm_wr_8),
    .up_cm_wdata (up_cm_wdata_8),
    .up_cm_rdata (up_cm_rdata_8),
    .up_cm_ready (up_cm_ready_8));
  end else begin
  assign qpll2ch_clk_8 = 1'd0;
  assign qpll2ch_ref_clk_8 = 1'd0;
  assign qpll2ch_locked_8 = 1'd0;
  assign qpll1_clk_8 = 1'd0;
  assign qpll1_ref_clk_8 = 1'd0;
  assign qpll1_locked_8 = 1'd0;
  assign up_cm_rdata_8 = 16'd0;
  assign up_cm_ready_8 = 1'd0;
  end
  endgenerate

  generate
  if (NUM_OF_LANES >= 9) begin
  util_adxcvr_xch #(
    .XCVR_TYPE (XCVR_TYPE),
    .LINK_MODE (LINK_MODE),
    .DATA_PATH_WIDTH (DATA_PATH_WIDTH),
    .CPLL_FBDIV (CPLL_FBDIV),
    .CPLL_FBDIV_4_5 (CPLL_FBDIV_4_5),
    .CPLL_CFG0 (CPLL_CFG0),
    .CPLL_CFG1 (CPLL_CFG1),
    .CPLL_CFG2 (CPLL_CFG2),
    .CPLL_CFG3 (CPLL_CFG3),
    .TX_OUT_DIV (TX_OUT_DIV),
    .TX_CLK25_DIV (TX_CLK25_DIV),
    .TX_POLARITY ((TX_LANE_INVERT >> 8) & 1),
    .TX_PI_BIASSET (TX_PI_BIASSET),
    .TXPI_CFG (TXPI_CFG),
    .A_TXDIFFCTRL (A_TXDIFFCTRL),
    .RX_OUT_DIV (RX_OUT_DIV),
    .RX_CLK25_DIV (RX_CLK25_DIV),
    .RX_DFE_LPM_CFG (RX_DFE_LPM_CFG),
    .RX_PMA_CFG (RX_PMA_CFG),
    .RX_CDR_CFG (RX_CDR_CFG),
    .RX_POLARITY ((RX_LANE_INVERT >> 8) & 1),
    .RXCDR_CFG0 (RXCDR_CFG0),
    .RXCDR_CFG2 (RXCDR_CFG2),
    .RXCDR_CFG2_GEN2 (RXCDR_CFG2_GEN2),
    .RXCDR_CFG2_GEN4 (RXCDR_CFG2_GEN4),
    .RXCDR_CFG3 (RXCDR_CFG3),
    .RXCDR_CFG3_GEN2 (RXCDR_CFG3_GEN2),
    .RXCDR_CFG3_GEN3 (RXCDR_CFG3_GEN3),
    .RXCDR_CFG3_GEN4 (RXCDR_CFG3_GEN4),
    .RXDFE_KH_CFG2 (RXDFE_KH_CFG2),
    .RXDFE_KH_CFG3 (RXDFE_KH_CFG3),
    .RX_WIDEMODE_CDR (RX_WIDEMODE_CDR),
    .RX_XMODE_SEL (RX_XMODE_SEL),
    .TXDRV_FREQBAND (TXDRV_FREQBAND),
    .TXFE_CFG0 (TXFE_CFG0),
    .TXFE_CFG1 (TXFE_CFG1),
    .TXFE_CFG2 (TXFE_CFG2),
    .TXFE_CFG3 (TXFE_CFG3),
    .TXPI_CFG0 (TXPI_CFG0),
    .TXPI_CFG1 (TXPI_CFG1),
    .TXSWBST_EN (TXSWBST_EN),
    .CH_HSPMUX (CH_HSPMUX),
    .PREIQ_FREQ_BST (PREIQ_FREQ_BST),
    .RXPI_CFG0 (RXPI_CFG0),
    .RXPI_CFG1 (RXPI_CFG1),
    .RTX_BUF_CML_CTRL (RTX_BUF_CML_CTRL)
  ) i_xch_8 (
    .qpll2ch_clk (qpll2ch_clk_8),
    .qpll2ch_ref_clk (qpll2ch_ref_clk_8),
    .qpll2ch_locked (qpll2ch_locked_8),
    .qpll1_clk (qpll1_clk_8),
    .qpll1_ref_clk (qpll1_ref_clk_8),
    .qpll1_locked (qpll1_locked_8),
    .cpll_ref_clk (cpll_ref_clk_8),
    .up_cpll_rst (up_cpll_rst_8),
    .rx_p (rx_8_p),
    .rx_n (rx_8_n),
    .rx_out_clk (rx_out_clk_8),
    .rx_out_clk_div2 (rx_out_clk_div2_8),
    .rx_clk (rx_clk_8),
    .rx_clk_2x (rx_clk_2x_8),
    .rx_charisk (rx_charisk_8),
    .rx_disperr (rx_disperr_8),
    .rx_notintable (rx_notintable_8),
    .rx_data (rx_data_8),
    .rx_calign (rx_calign_8),
    .rx_header(rx_header_8),
    .rx_block_sync(rx_block_sync_8),
    .tx_p (tx_8_p),
    .tx_n (tx_8_n),
    .tx_out_clk (tx_out_clk_8),
    .tx_out_clk_div2 (tx_out_clk_div2_8),
    .tx_clk (tx_clk_8),
    .tx_clk_2x (tx_clk_2x_8),
    .tx_charisk (tx_charisk_8),
    .tx_data (tx_data_8),
    .tx_header (tx_header_8),
    .up_rstn (up_rstn),
    .up_clk (up_clk),
    .up_es_enb (up_es_enb_8),
    .up_es_addr (up_es_addr_8),
    .up_es_wr (up_es_wr_8),
    .up_es_wdata (up_es_wdata_8),
    .up_es_rdata (up_es_rdata_8),
    .up_es_ready (up_es_ready_8),
    .up_es_reset (up_es_reset_8),
    .up_rx_pll_locked (up_rx_pll_locked_8),
    .up_rx_rst (up_rx_rst_8),
    .up_rx_user_ready (up_rx_user_ready_8),
    .up_rx_rst_done (up_rx_rst_done_8),
    .up_rx_prbssel (up_rx_prbssel_8),
    .up_rx_prbscntreset (up_rx_prbscntreset_8),
    .up_rx_prbserr (up_rx_prbserr_8),
    .up_rx_prbslocked (up_rx_prbslocked_8),
    .up_rx_bufstatus (up_rx_bufstatus_8),
    .up_rx_bufstatus_rst (up_rx_bufstatus_rst_8),
    .up_rx_lpm_dfe_n (up_rx_lpm_dfe_n_8),
    .up_rx_rate (up_rx_rate_8),
    .up_rx_sys_clk_sel (up_rx_sys_clk_sel_8),
    .up_rx_out_clk_sel (up_rx_out_clk_sel_8),
    .up_rx_enb (up_rx_enb_8),
    .up_rx_addr (up_rx_addr_8),
    .up_rx_wr (up_rx_wr_8),
    .up_rx_wdata (up_rx_wdata_8),
    .up_rx_rdata (up_rx_rdata_8),
    .up_rx_ready (up_rx_ready_8),
    .up_tx_pll_locked (up_tx_pll_locked_8),
    .up_tx_rst (up_tx_rst_8),
    .up_tx_user_ready (up_tx_user_ready_8),
    .up_tx_rst_done (up_tx_rst_done_8),
    .up_tx_bufstatus (up_tx_bufstatus_8),
    .up_tx_prbsforceerr (up_tx_prbsforceerr_8),
    .up_tx_prbssel (up_tx_prbssel_8),
    .up_tx_lpm_dfe_n (up_tx_lpm_dfe_n_8),
    .up_tx_rate (up_tx_rate_8),
    .up_tx_sys_clk_sel (up_tx_sys_clk_sel_8),
    .up_tx_out_clk_sel (up_tx_out_clk_sel_8),
    .up_tx_diffctrl (up_tx_diffctrl_8),
    .up_tx_postcursor (up_tx_postcursor_8),
    .up_tx_precursor (up_tx_precursor_8),
    .up_tx_enb (up_tx_enb_8),
    .up_tx_addr (up_tx_addr_8),
    .up_tx_wr (up_tx_wr_8),
    .up_tx_wdata (up_tx_wdata_8),
    .up_tx_rdata (up_tx_rdata_8),
    .up_tx_ready (up_tx_ready_8));
  end else begin
  assign rx_out_clk_8 = 1'd0;
  assign rx_charisk_8 = 4'd0;
  assign rx_disperr_8 = 4'd0;
  assign rx_notintable_8 = 4'd0;
  assign rx_data_8 = 32'd0;
  assign tx_8_p = 1'd0;
  assign tx_8_n = 1'd0;
  assign tx_out_clk_8 = 1'd0;
  assign up_es_rdata_8 = 16'd0;
  assign up_es_ready_8 = 1'd0;
  assign up_rx_pll_locked_8 = 1'd0;
  assign up_rx_rst_done_8 = 1'd0;
  assign up_rx_rdata_8 = 16'd0;
  assign up_rx_ready_8 = 1'd0;
  assign up_tx_pll_locked_8 = 1'd0;
  assign up_tx_rst_done_8 = 1'd0;
  assign up_tx_rdata_8 = 16'd0;
  assign up_tx_ready_8 = 1'd0;
  end
  endgenerate

  generate
  if (NUM_OF_LANES >= 10) begin
  util_adxcvr_xch #(
    .XCVR_TYPE (XCVR_TYPE),
    .LINK_MODE (LINK_MODE),
    .DATA_PATH_WIDTH (DATA_PATH_WIDTH),
    .CPLL_FBDIV (CPLL_FBDIV),
    .CPLL_FBDIV_4_5 (CPLL_FBDIV_4_5),
    .CPLL_CFG0 (CPLL_CFG0),
    .CPLL_CFG1 (CPLL_CFG1),
    .CPLL_CFG2 (CPLL_CFG2),
    .CPLL_CFG3 (CPLL_CFG3),
    .TX_OUT_DIV (TX_OUT_DIV),
    .TX_CLK25_DIV (TX_CLK25_DIV),
    .TX_POLARITY ((TX_LANE_INVERT >> 9) & 1),
    .TX_PI_BIASSET (TX_PI_BIASSET),
    .TXPI_CFG (TXPI_CFG),
    .A_TXDIFFCTRL (A_TXDIFFCTRL),
    .RX_OUT_DIV (RX_OUT_DIV),
    .RX_CLK25_DIV (RX_CLK25_DIV),
    .RX_DFE_LPM_CFG (RX_DFE_LPM_CFG),
    .RX_PMA_CFG (RX_PMA_CFG),
    .RX_CDR_CFG (RX_CDR_CFG),
    .RX_POLARITY ((RX_LANE_INVERT >> 9) & 1),
    .RXCDR_CFG0 (RXCDR_CFG0),
    .RXCDR_CFG2 (RXCDR_CFG2),
    .RXCDR_CFG2_GEN2 (RXCDR_CFG2_GEN2),
    .RXCDR_CFG2_GEN4 (RXCDR_CFG2_GEN4),
    .RXCDR_CFG3 (RXCDR_CFG3),
    .RXCDR_CFG3_GEN2 (RXCDR_CFG3_GEN2),
    .RXCDR_CFG3_GEN3 (RXCDR_CFG3_GEN3),
    .RXCDR_CFG3_GEN4 (RXCDR_CFG3_GEN4),
    .RXDFE_KH_CFG2 (RXDFE_KH_CFG2),
    .RXDFE_KH_CFG3 (RXDFE_KH_CFG3),
    .RX_WIDEMODE_CDR (RX_WIDEMODE_CDR),
    .RX_XMODE_SEL (RX_XMODE_SEL),
    .TXDRV_FREQBAND (TXDRV_FREQBAND),
    .TXFE_CFG0 (TXFE_CFG0),
    .TXFE_CFG1 (TXFE_CFG1),
    .TXFE_CFG2 (TXFE_CFG2),
    .TXFE_CFG3 (TXFE_CFG3),
    .TXPI_CFG0 (TXPI_CFG0),
    .TXPI_CFG1 (TXPI_CFG1),
    .TXSWBST_EN (TXSWBST_EN),
    .CH_HSPMUX (CH_HSPMUX),
    .PREIQ_FREQ_BST (PREIQ_FREQ_BST),
    .RXPI_CFG0 (RXPI_CFG0),
    .RXPI_CFG1 (RXPI_CFG1),
    .RTX_BUF_CML_CTRL (RTX_BUF_CML_CTRL)
  ) i_xch_9 (
    .qpll2ch_clk (qpll2ch_clk_8),
    .qpll2ch_ref_clk (qpll2ch_ref_clk_8),
    .qpll2ch_locked (qpll2ch_locked_8),
    .qpll1_clk (qpll1_clk_8),
    .qpll1_ref_clk (qpll1_ref_clk_8),
    .qpll1_locked (qpll1_locked_8),
    .cpll_ref_clk (cpll_ref_clk_9),
    .up_cpll_rst (up_cpll_rst_9),
    .rx_p (rx_9_p),
    .rx_n (rx_9_n),
    .rx_out_clk (rx_out_clk_9),
    .rx_out_clk_div2 (rx_out_clk_div2_9),
    .rx_clk (rx_clk_9),
    .rx_clk_2x (rx_clk_2x_9),
    .rx_charisk (rx_charisk_9),
    .rx_disperr (rx_disperr_9),
    .rx_notintable (rx_notintable_9),
    .rx_data (rx_data_9),
    .rx_calign (rx_calign_9),
    .rx_header(rx_header_9),
    .rx_block_sync(rx_block_sync_9),
    .tx_p (tx_9_p),
    .tx_n (tx_9_n),
    .tx_out_clk (tx_out_clk_9),
    .tx_out_clk_div2 (tx_out_clk_div2_9),
    .tx_clk (tx_clk_9),
    .tx_clk_2x (tx_clk_2x_9),
    .tx_charisk (tx_charisk_9),
    .tx_data (tx_data_9),
    .tx_header (tx_header_9),
    .up_rstn (up_rstn),
    .up_clk (up_clk),
    .up_es_enb (up_es_enb_9),
    .up_es_addr (up_es_addr_9),
    .up_es_wr (up_es_wr_9),
    .up_es_wdata (up_es_wdata_9),
    .up_es_rdata (up_es_rdata_9),
    .up_es_ready (up_es_ready_9),
    .up_es_reset (up_es_reset_9),
    .up_rx_pll_locked (up_rx_pll_locked_9),
    .up_rx_rst (up_rx_rst_9),
    .up_rx_user_ready (up_rx_user_ready_9),
    .up_rx_rst_done (up_rx_rst_done_9),
    .up_rx_prbssel (up_rx_prbssel_9),
    .up_rx_prbscntreset (up_rx_prbscntreset_9),
    .up_rx_prbserr (up_rx_prbserr_9),
    .up_rx_prbslocked (up_rx_prbslocked_9),
    .up_rx_bufstatus (up_rx_bufstatus_9),
    .up_rx_bufstatus_rst (up_rx_bufstatus_rst_9),
    .up_rx_lpm_dfe_n (up_rx_lpm_dfe_n_9),
    .up_rx_rate (up_rx_rate_9),
    .up_rx_sys_clk_sel (up_rx_sys_clk_sel_9),
    .up_rx_out_clk_sel (up_rx_out_clk_sel_9),
    .up_rx_enb (up_rx_enb_9),
    .up_rx_addr (up_rx_addr_9),
    .up_rx_wr (up_rx_wr_9),
    .up_rx_wdata (up_rx_wdata_9),
    .up_rx_rdata (up_rx_rdata_9),
    .up_rx_ready (up_rx_ready_9),
    .up_tx_pll_locked (up_tx_pll_locked_9),
    .up_tx_rst (up_tx_rst_9),
    .up_tx_user_ready (up_tx_user_ready_9),
    .up_tx_rst_done (up_tx_rst_done_9),
    .up_tx_bufstatus (up_tx_bufstatus_9),
    .up_tx_prbsforceerr (up_tx_prbsforceerr_9),
    .up_tx_prbssel (up_tx_prbssel_9),
    .up_tx_lpm_dfe_n (up_tx_lpm_dfe_n_9),
    .up_tx_rate (up_tx_rate_9),
    .up_tx_sys_clk_sel (up_tx_sys_clk_sel_9),
    .up_tx_out_clk_sel (up_tx_out_clk_sel_9),
    .up_tx_diffctrl (up_tx_diffctrl_9),
    .up_tx_postcursor (up_tx_postcursor_9),
    .up_tx_precursor (up_tx_precursor_9),
    .up_tx_enb (up_tx_enb_9),
    .up_tx_addr (up_tx_addr_9),
    .up_tx_wr (up_tx_wr_9),
    .up_tx_wdata (up_tx_wdata_9),
    .up_tx_rdata (up_tx_rdata_9),
    .up_tx_ready (up_tx_ready_9));
  end else begin
  assign rx_out_clk_9 = 1'd0;
  assign rx_charisk_9 = 4'd0;
  assign rx_disperr_9 = 4'd0;
  assign rx_notintable_9 = 4'd0;
  assign rx_data_9 = 32'd0;
  assign tx_9_p = 1'd0;
  assign tx_9_n = 1'd0;
  assign tx_out_clk_9 = 1'd0;
  assign up_es_rdata_9 = 16'd0;
  assign up_es_ready_9 = 1'd0;
  assign up_rx_pll_locked_9 = 1'd0;
  assign up_rx_rst_done_9 = 1'd0;
  assign up_rx_rdata_9 = 16'd0;
  assign up_rx_ready_9 = 1'd0;
  assign up_tx_pll_locked_9 = 1'd0;
  assign up_tx_rst_done_9 = 1'd0;
  assign up_tx_rdata_9 = 16'd0;
  assign up_tx_ready_9 = 1'd0;
  end
  endgenerate

  generate
  if (NUM_OF_LANES >= 11) begin
  util_adxcvr_xch #(
    .XCVR_TYPE (XCVR_TYPE),
    .LINK_MODE (LINK_MODE),
    .DATA_PATH_WIDTH (DATA_PATH_WIDTH),
    .CPLL_FBDIV (CPLL_FBDIV),
    .CPLL_FBDIV_4_5 (CPLL_FBDIV_4_5),
    .CPLL_CFG0 (CPLL_CFG0),
    .CPLL_CFG1 (CPLL_CFG1),
    .CPLL_CFG2 (CPLL_CFG2),
    .CPLL_CFG3 (CPLL_CFG3),
    .TX_OUT_DIV (TX_OUT_DIV),
    .TX_CLK25_DIV (TX_CLK25_DIV),
    .TX_POLARITY ((TX_LANE_INVERT >> 10) & 1),
    .TX_PI_BIASSET (TX_PI_BIASSET),
    .TXPI_CFG (TXPI_CFG),
    .A_TXDIFFCTRL (A_TXDIFFCTRL),
    .RX_OUT_DIV (RX_OUT_DIV),
    .RX_CLK25_DIV (RX_CLK25_DIV),
    .RX_DFE_LPM_CFG (RX_DFE_LPM_CFG),
    .RX_PMA_CFG (RX_PMA_CFG),
    .RX_CDR_CFG (RX_CDR_CFG),
    .RX_POLARITY ((RX_LANE_INVERT >> 10) & 1),
    .RXCDR_CFG0 (RXCDR_CFG0),
    .RXCDR_CFG2 (RXCDR_CFG2),
    .RXCDR_CFG2_GEN2 (RXCDR_CFG2_GEN2),
    .RXCDR_CFG2_GEN4 (RXCDR_CFG2_GEN4),
    .RXCDR_CFG3 (RXCDR_CFG3),
    .RXCDR_CFG3_GEN2 (RXCDR_CFG3_GEN2),
    .RXCDR_CFG3_GEN3 (RXCDR_CFG3_GEN3),
    .RXCDR_CFG3_GEN4 (RXCDR_CFG3_GEN4),
    .RXDFE_KH_CFG2 (RXDFE_KH_CFG2),
    .RXDFE_KH_CFG3 (RXDFE_KH_CFG3),
    .RX_WIDEMODE_CDR (RX_WIDEMODE_CDR),
    .RX_XMODE_SEL (RX_XMODE_SEL),
    .TXDRV_FREQBAND (TXDRV_FREQBAND),
    .TXFE_CFG0 (TXFE_CFG0),
    .TXFE_CFG1 (TXFE_CFG1),
    .TXFE_CFG2 (TXFE_CFG2),
    .TXFE_CFG3 (TXFE_CFG3),
    .TXPI_CFG0 (TXPI_CFG0),
    .TXPI_CFG1 (TXPI_CFG1),
    .TXSWBST_EN (TXSWBST_EN),
    .CH_HSPMUX (CH_HSPMUX),
    .PREIQ_FREQ_BST (PREIQ_FREQ_BST),
    .RXPI_CFG0 (RXPI_CFG0),
    .RXPI_CFG1 (RXPI_CFG1),
    .RTX_BUF_CML_CTRL (RTX_BUF_CML_CTRL)
  ) i_xch_10 (
    .qpll2ch_clk (qpll2ch_clk_8),
    .qpll2ch_ref_clk (qpll2ch_ref_clk_8),
    .qpll2ch_locked (qpll2ch_locked_8),
    .qpll1_clk (qpll1_clk_8),
    .qpll1_ref_clk (qpll1_ref_clk_8),
    .qpll1_locked (qpll1_locked_8),
    .cpll_ref_clk (cpll_ref_clk_10),
    .up_cpll_rst (up_cpll_rst_10),
    .rx_p (rx_10_p),
    .rx_n (rx_10_n),
    .rx_out_clk (rx_out_clk_10),
    .rx_out_clk_div2 (rx_out_clk_div2_10),
    .rx_clk (rx_clk_10),
    .rx_clk_2x (rx_clk_2x_10),
    .rx_charisk (rx_charisk_10),
    .rx_disperr (rx_disperr_10),
    .rx_notintable (rx_notintable_10),
    .rx_data (rx_data_10),
    .rx_calign (rx_calign_10),
    .rx_header(rx_header_10),
    .rx_block_sync(rx_block_sync_10),
    .tx_p (tx_10_p),
    .tx_n (tx_10_n),
    .tx_out_clk (tx_out_clk_10),
    .tx_out_clk_div2 (tx_out_clk_div2_10),
    .tx_clk (tx_clk_10),
    .tx_clk_2x (tx_clk_2x_10),
    .tx_charisk (tx_charisk_10),
    .tx_data (tx_data_10),
    .tx_header (tx_header_10),
    .up_rstn (up_rstn),
    .up_clk (up_clk),
    .up_es_enb (up_es_enb_10),
    .up_es_addr (up_es_addr_10),
    .up_es_wr (up_es_wr_10),
    .up_es_wdata (up_es_wdata_10),
    .up_es_rdata (up_es_rdata_10),
    .up_es_ready (up_es_ready_10),
    .up_es_reset (up_es_reset_10),
    .up_rx_pll_locked (up_rx_pll_locked_10),
    .up_rx_rst (up_rx_rst_10),
    .up_rx_user_ready (up_rx_user_ready_10),
    .up_rx_rst_done (up_rx_rst_done_10),
    .up_rx_prbssel (up_rx_prbssel_10),
    .up_rx_prbscntreset (up_rx_prbscntreset_10),
    .up_rx_prbserr (up_rx_prbserr_10),
    .up_rx_prbslocked (up_rx_prbslocked_10),
    .up_rx_bufstatus (up_rx_bufstatus_10),
    .up_rx_bufstatus_rst (up_rx_bufstatus_rst_10),
    .up_rx_lpm_dfe_n (up_rx_lpm_dfe_n_10),
    .up_rx_rate (up_rx_rate_10),
    .up_rx_sys_clk_sel (up_rx_sys_clk_sel_10),
    .up_rx_out_clk_sel (up_rx_out_clk_sel_10),
    .up_rx_enb (up_rx_enb_10),
    .up_rx_addr (up_rx_addr_10),
    .up_rx_wr (up_rx_wr_10),
    .up_rx_wdata (up_rx_wdata_10),
    .up_rx_rdata (up_rx_rdata_10),
    .up_rx_ready (up_rx_ready_10),
    .up_tx_pll_locked (up_tx_pll_locked_10),
    .up_tx_rst (up_tx_rst_10),
    .up_tx_user_ready (up_tx_user_ready_10),
    .up_tx_rst_done (up_tx_rst_done_10),
    .up_tx_bufstatus (up_tx_bufstatus_10),
    .up_tx_prbsforceerr (up_tx_prbsforceerr_10),
    .up_tx_prbssel (up_tx_prbssel_10),
    .up_tx_lpm_dfe_n (up_tx_lpm_dfe_n_10),
    .up_tx_rate (up_tx_rate_10),
    .up_tx_sys_clk_sel (up_tx_sys_clk_sel_10),
    .up_tx_out_clk_sel (up_tx_out_clk_sel_10),
    .up_tx_diffctrl (up_tx_diffctrl_10),
    .up_tx_postcursor (up_tx_postcursor_10),
    .up_tx_precursor (up_tx_precursor_10),
    .up_tx_enb (up_tx_enb_10),
    .up_tx_addr (up_tx_addr_10),
    .up_tx_wr (up_tx_wr_10),
    .up_tx_wdata (up_tx_wdata_10),
    .up_tx_rdata (up_tx_rdata_10),
    .up_tx_ready (up_tx_ready_10));
  end else begin
  assign rx_out_clk_10 = 1'd0;
  assign rx_charisk_10 = 4'd0;
  assign rx_disperr_10 = 4'd0;
  assign rx_notintable_10 = 4'd0;
  assign rx_data_10 = 32'd0;
  assign tx_10_p = 1'd0;
  assign tx_10_n = 1'd0;
  assign tx_out_clk_10 = 1'd0;
  assign up_es_rdata_10 = 16'd0;
  assign up_es_ready_10 = 1'd0;
  assign up_rx_pll_locked_10 = 1'd0;
  assign up_rx_rst_done_10 = 1'd0;
  assign up_rx_rdata_10 = 16'd0;
  assign up_rx_ready_10 = 1'd0;
  assign up_tx_pll_locked_10 = 1'd0;
  assign up_tx_rst_done_10 = 1'd0;
  assign up_tx_rdata_10 = 16'd0;
  assign up_tx_ready_10 = 1'd0;
  end
  endgenerate

  generate
  if (NUM_OF_LANES >= 12) begin
  util_adxcvr_xch #(
    .XCVR_TYPE (XCVR_TYPE),
    .LINK_MODE (LINK_MODE),
    .DATA_PATH_WIDTH (DATA_PATH_WIDTH),
    .CPLL_FBDIV (CPLL_FBDIV),
    .CPLL_FBDIV_4_5 (CPLL_FBDIV_4_5),
    .CPLL_CFG0 (CPLL_CFG0),
    .CPLL_CFG1 (CPLL_CFG1),
    .CPLL_CFG2 (CPLL_CFG2),
    .CPLL_CFG3 (CPLL_CFG3),
    .TX_OUT_DIV (TX_OUT_DIV),
    .TX_CLK25_DIV (TX_CLK25_DIV),
    .TX_POLARITY ((TX_LANE_INVERT >> 11) & 1),
    .TX_PI_BIASSET (TX_PI_BIASSET),
    .TXPI_CFG (TXPI_CFG),
    .A_TXDIFFCTRL (A_TXDIFFCTRL),
    .RX_OUT_DIV (RX_OUT_DIV),
    .RX_CLK25_DIV (RX_CLK25_DIV),
    .RX_DFE_LPM_CFG (RX_DFE_LPM_CFG),
    .RX_PMA_CFG (RX_PMA_CFG),
    .RX_CDR_CFG (RX_CDR_CFG),
    .RX_POLARITY ((RX_LANE_INVERT >> 11) & 1),
    .RXCDR_CFG0 (RXCDR_CFG0),
    .RXCDR_CFG2 (RXCDR_CFG2),
    .RXCDR_CFG2_GEN2 (RXCDR_CFG2_GEN2),
    .RXCDR_CFG2_GEN4 (RXCDR_CFG2_GEN4),
    .RXCDR_CFG3 (RXCDR_CFG3),
    .RXCDR_CFG3_GEN2 (RXCDR_CFG3_GEN2),
    .RXCDR_CFG3_GEN3 (RXCDR_CFG3_GEN3),
    .RXCDR_CFG3_GEN4 (RXCDR_CFG3_GEN4),
    .RXDFE_KH_CFG2 (RXDFE_KH_CFG2),
    .RXDFE_KH_CFG3 (RXDFE_KH_CFG3),
    .RX_WIDEMODE_CDR (RX_WIDEMODE_CDR),
    .RX_XMODE_SEL (RX_XMODE_SEL),
    .TXDRV_FREQBAND (TXDRV_FREQBAND),
    .TXFE_CFG0 (TXFE_CFG0),
    .TXFE_CFG1 (TXFE_CFG1),
    .TXFE_CFG2 (TXFE_CFG2),
    .TXFE_CFG3 (TXFE_CFG3),
    .TXPI_CFG0 (TXPI_CFG0),
    .TXPI_CFG1 (TXPI_CFG1),
    .TXSWBST_EN (TXSWBST_EN),
    .CH_HSPMUX (CH_HSPMUX),
    .PREIQ_FREQ_BST (PREIQ_FREQ_BST),
    .RXPI_CFG0 (RXPI_CFG0),
    .RXPI_CFG1 (RXPI_CFG1),
    .RTX_BUF_CML_CTRL (RTX_BUF_CML_CTRL)
  ) i_xch_11 (
    .qpll2ch_clk (qpll2ch_clk_8),
    .qpll2ch_ref_clk (qpll2ch_ref_clk_8),
    .qpll2ch_locked (qpll2ch_locked_8),
    .qpll1_clk (qpll1_clk_8),
    .qpll1_ref_clk (qpll1_ref_clk_8),
    .qpll1_locked (qpll1_locked_8),
    .cpll_ref_clk (cpll_ref_clk_11),
    .up_cpll_rst (up_cpll_rst_11),
    .rx_p (rx_11_p),
    .rx_n (rx_11_n),
    .rx_out_clk (rx_out_clk_11),
    .rx_out_clk_div2 (rx_out_clk_div2_11),
    .rx_clk (rx_clk_11),
    .rx_clk_2x (rx_clk_2x_11),
    .rx_charisk (rx_charisk_11),
    .rx_disperr (rx_disperr_11),
    .rx_notintable (rx_notintable_11),
    .rx_data (rx_data_11),
    .rx_calign (rx_calign_11),
    .rx_header(rx_header_11),
    .rx_block_sync(rx_block_sync_11),
    .tx_p (tx_11_p),
    .tx_n (tx_11_n),
    .tx_out_clk (tx_out_clk_11),
    .tx_out_clk_div2 (tx_out_clk_div2_11),
    .tx_clk (tx_clk_11),
    .tx_clk_2x (tx_clk_2x_11),
    .tx_charisk (tx_charisk_11),
    .tx_data (tx_data_11),
    .tx_header (tx_header_11),
    .up_rstn (up_rstn),
    .up_clk (up_clk),
    .up_es_enb (up_es_enb_11),
    .up_es_addr (up_es_addr_11),
    .up_es_wr (up_es_wr_11),
    .up_es_wdata (up_es_wdata_11),
    .up_es_rdata (up_es_rdata_11),
    .up_es_ready (up_es_ready_11),
    .up_es_reset (up_es_reset_11),
    .up_rx_pll_locked (up_rx_pll_locked_11),
    .up_rx_rst (up_rx_rst_11),
    .up_rx_user_ready (up_rx_user_ready_11),
    .up_rx_rst_done (up_rx_rst_done_11),
    .up_rx_prbssel (up_rx_prbssel_11),
    .up_rx_prbscntreset (up_rx_prbscntreset_11),
    .up_rx_prbserr (up_rx_prbserr_11),
    .up_rx_prbslocked (up_rx_prbslocked_11),
    .up_rx_bufstatus (up_rx_bufstatus_11),
    .up_rx_bufstatus_rst (up_rx_bufstatus_rst_11),
    .up_rx_lpm_dfe_n (up_rx_lpm_dfe_n_11),
    .up_rx_rate (up_rx_rate_11),
    .up_rx_sys_clk_sel (up_rx_sys_clk_sel_11),
    .up_rx_out_clk_sel (up_rx_out_clk_sel_11),
    .up_rx_enb (up_rx_enb_11),
    .up_rx_addr (up_rx_addr_11),
    .up_rx_wr (up_rx_wr_11),
    .up_rx_wdata (up_rx_wdata_11),
    .up_rx_rdata (up_rx_rdata_11),
    .up_rx_ready (up_rx_ready_11),
    .up_tx_pll_locked (up_tx_pll_locked_11),
    .up_tx_rst (up_tx_rst_11),
    .up_tx_user_ready (up_tx_user_ready_11),
    .up_tx_rst_done (up_tx_rst_done_11),
    .up_tx_bufstatus (up_tx_bufstatus_11),
    .up_tx_prbsforceerr (up_tx_prbsforceerr_11),
    .up_tx_prbssel (up_tx_prbssel_11),
    .up_tx_lpm_dfe_n (up_tx_lpm_dfe_n_11),
    .up_tx_rate (up_tx_rate_11),
    .up_tx_sys_clk_sel (up_tx_sys_clk_sel_11),
    .up_tx_out_clk_sel (up_tx_out_clk_sel_11),
    .up_tx_diffctrl (up_tx_diffctrl_11),
    .up_tx_postcursor (up_tx_postcursor_11),
    .up_tx_precursor (up_tx_precursor_11),
    .up_tx_enb (up_tx_enb_11),
    .up_tx_addr (up_tx_addr_11),
    .up_tx_wr (up_tx_wr_11),
    .up_tx_wdata (up_tx_wdata_11),
    .up_tx_rdata (up_tx_rdata_11),
    .up_tx_ready (up_tx_ready_11));
  end else begin
  assign rx_out_clk_11 = 1'd0;
  assign rx_charisk_11 = 4'd0;
  assign rx_disperr_11 = 4'd0;
  assign rx_notintable_11 = 4'd0;
  assign rx_data_11 = 32'd0;
  assign tx_11_p = 1'd0;
  assign tx_11_n = 1'd0;
  assign tx_out_clk_11 = 1'd0;
  assign up_es_rdata_11 = 16'd0;
  assign up_es_ready_11 = 1'd0;
  assign up_rx_pll_locked_11 = 1'd0;
  assign up_rx_rst_done_11 = 1'd0;
  assign up_rx_rdata_11 = 16'd0;
  assign up_rx_ready_11 = 1'd0;
  assign up_tx_pll_locked_11 = 1'd0;
  assign up_tx_rst_done_11 = 1'd0;
  assign up_tx_rdata_11 = 16'd0;
  assign up_tx_ready_11 = 1'd0;
  end
  endgenerate

  generate
  if (NUM_OF_LANES >= 13) begin
  util_adxcvr_xcm #(
    .XCVR_TYPE (XCVR_TYPE),
    .QPLL_REFCLK_DIV (QPLL_REFCLK_DIV),
    .QPLL_FBDIV_RATIO (QPLL_FBDIV_RATIO),
    .POR_CFG (POR_CFG),
    .PPF0_CFG (PPF0_CFG),
    .PPF1_CFG (PPF1_CFG),
    .QPLL_CFG (QPLL_CFG),
    .QPLL_FBDIV (QPLL_FBDIV),
    .QPLL_CFG0 (QPLL_CFG0),
    .QPLL_CFG1 (QPLL_CFG1),
    .QPLL_CFG1_G3 (QPLL_CFG1_G3),
    .QPLL_CFG2 (QPLL_CFG2),
    .QPLL_CFG2_G3 (QPLL_CFG2_G3),
    .QPLL_CFG3 (QPLL_CFG3),
    .QPLL_CP_G3 (QPLL_CP_G3),
    .QPLL_LPF (QPLL_LPF),
    .QPLL_CP (QPLL_CP),
    .QPLL_CFG4 (QPLL_CFG4)
  ) i_xcm_12 (
    .qpll_ref_clk (qpll_ref_clk_12),
    .qpll_sel (qpll_sel_12),
    .qpll2ch_clk (qpll2ch_clk_12),
    .qpll2ch_ref_clk (qpll2ch_ref_clk_12),
    .qpll2ch_locked (qpll2ch_locked_12),
    .qpll1_clk (qpll1_clk_12),
    .qpll1_ref_clk (qpll1_ref_clk_12),
    .qpll1_locked (qpll1_locked_12),
    .up_rstn (up_rstn),
    .up_clk (up_clk),
    .up_qpll_rst (up_qpll_rst_12),
    .up_cm_enb (up_cm_enb_12),
    .up_cm_addr (up_cm_addr_12),
    .up_cm_wr (up_cm_wr_12),
    .up_cm_wdata (up_cm_wdata_12),
    .up_cm_rdata (up_cm_rdata_12),
    .up_cm_ready (up_cm_ready_12));
  end else begin
  assign qpll2ch_clk_12 = 1'd0;
  assign qpll2ch_ref_clk_12 = 1'd0;
  assign qpll2ch_locked_12 = 1'd0;
  assign qpll1_clk_12 = 1'd0;
  assign qpll1_ref_clk_12 = 1'd0;
  assign qpll1_locked_12 = 1'd0;
  assign up_cm_rdata_12 = 16'd0;
  assign up_cm_ready_12 = 1'd0;
  end
  endgenerate

  generate
  if (NUM_OF_LANES >= 13) begin
  util_adxcvr_xch #(
    .XCVR_TYPE (XCVR_TYPE),
    .LINK_MODE (LINK_MODE),
    .DATA_PATH_WIDTH (DATA_PATH_WIDTH),
    .CPLL_FBDIV (CPLL_FBDIV),
    .CPLL_FBDIV_4_5 (CPLL_FBDIV_4_5),
    .CPLL_CFG0 (CPLL_CFG0),
    .CPLL_CFG1 (CPLL_CFG1),
    .CPLL_CFG2 (CPLL_CFG2),
    .CPLL_CFG3 (CPLL_CFG3),
    .TX_OUT_DIV (TX_OUT_DIV),
    .TX_CLK25_DIV (TX_CLK25_DIV),
    .TX_POLARITY ((TX_LANE_INVERT >> 12) & 1),
    .TX_PI_BIASSET (TX_PI_BIASSET),
    .TXPI_CFG (TXPI_CFG),
    .A_TXDIFFCTRL (A_TXDIFFCTRL),
    .RX_OUT_DIV (RX_OUT_DIV),
    .RX_CLK25_DIV (RX_CLK25_DIV),
    .RX_DFE_LPM_CFG (RX_DFE_LPM_CFG),
    .RX_PMA_CFG (RX_PMA_CFG),
    .RX_CDR_CFG (RX_CDR_CFG),
    .RX_POLARITY ((RX_LANE_INVERT >> 12) & 1),
    .RXCDR_CFG0 (RXCDR_CFG0),
    .RXCDR_CFG2 (RXCDR_CFG2),
    .RXCDR_CFG2_GEN2 (RXCDR_CFG2_GEN2),
    .RXCDR_CFG2_GEN4 (RXCDR_CFG2_GEN4),
    .RXCDR_CFG3 (RXCDR_CFG3),
    .RXCDR_CFG3_GEN2 (RXCDR_CFG3_GEN2),
    .RXCDR_CFG3_GEN3 (RXCDR_CFG3_GEN3),
    .RXCDR_CFG3_GEN4 (RXCDR_CFG3_GEN4),
    .RXDFE_KH_CFG2 (RXDFE_KH_CFG2),
    .RXDFE_KH_CFG3 (RXDFE_KH_CFG3),
    .RX_WIDEMODE_CDR (RX_WIDEMODE_CDR),
    .RX_XMODE_SEL (RX_XMODE_SEL),
    .TXDRV_FREQBAND (TXDRV_FREQBAND),
    .TXFE_CFG0 (TXFE_CFG0),
    .TXFE_CFG1 (TXFE_CFG1),
    .TXFE_CFG2 (TXFE_CFG2),
    .TXFE_CFG3 (TXFE_CFG3),
    .TXPI_CFG0 (TXPI_CFG0),
    .TXPI_CFG1 (TXPI_CFG1),
    .TXSWBST_EN (TXSWBST_EN),
    .CH_HSPMUX (CH_HSPMUX),
    .PREIQ_FREQ_BST (PREIQ_FREQ_BST),
    .RXPI_CFG0 (RXPI_CFG0),
    .RXPI_CFG1 (RXPI_CFG1),
    .RTX_BUF_CML_CTRL (RTX_BUF_CML_CTRL)
  ) i_xch_12 (
    .qpll2ch_clk (qpll2ch_clk_12),
    .qpll2ch_ref_clk (qpll2ch_ref_clk_12),
    .qpll2ch_locked (qpll2ch_locked_12),
    .qpll1_clk (qpll1_clk_12),
    .qpll1_ref_clk (qpll1_ref_clk_12),
    .qpll1_locked (qpll1_locked_12),
    .cpll_ref_clk (cpll_ref_clk_12),
    .up_cpll_rst (up_cpll_rst_12),
    .rx_p (rx_12_p),
    .rx_n (rx_12_n),
    .rx_out_clk (rx_out_clk_12),
    .rx_out_clk_div2 (rx_out_clk_div2_12),
    .rx_clk (rx_clk_12),
    .rx_clk_2x (rx_clk_2x_12),
    .rx_charisk (rx_charisk_12),
    .rx_disperr (rx_disperr_12),
    .rx_notintable (rx_notintable_12),
    .rx_data (rx_data_12),
    .rx_calign (rx_calign_12),
    .rx_header(rx_header_12),
    .rx_block_sync(rx_block_sync_12),
    .tx_p (tx_12_p),
    .tx_n (tx_12_n),
    .tx_out_clk (tx_out_clk_12),
    .tx_out_clk_div2 (tx_out_clk_div2_12),
    .tx_clk (tx_clk_12),
    .tx_clk_2x (tx_clk_2x_12),
    .tx_charisk (tx_charisk_12),
    .tx_data (tx_data_12),
    .tx_header (tx_header_12),
    .up_rstn (up_rstn),
    .up_clk (up_clk),
    .up_es_enb (up_es_enb_12),
    .up_es_addr (up_es_addr_12),
    .up_es_wr (up_es_wr_12),
    .up_es_wdata (up_es_wdata_12),
    .up_es_rdata (up_es_rdata_12),
    .up_es_ready (up_es_ready_12),
    .up_es_reset (up_es_reset_12),
    .up_rx_pll_locked (up_rx_pll_locked_12),
    .up_rx_rst (up_rx_rst_12),
    .up_rx_user_ready (up_rx_user_ready_12),
    .up_rx_rst_done (up_rx_rst_done_12),
    .up_rx_prbssel (up_rx_prbssel_12),
    .up_rx_prbscntreset (up_rx_prbscntreset_12),
    .up_rx_prbserr (up_rx_prbserr_12),
    .up_rx_prbslocked (up_rx_prbslocked_12),
    .up_rx_bufstatus (up_rx_bufstatus_12),
    .up_rx_bufstatus_rst (up_rx_bufstatus_rst_12),
    .up_rx_lpm_dfe_n (up_rx_lpm_dfe_n_12),
    .up_rx_rate (up_rx_rate_12),
    .up_rx_sys_clk_sel (up_rx_sys_clk_sel_12),
    .up_rx_out_clk_sel (up_rx_out_clk_sel_12),
    .up_rx_enb (up_rx_enb_12),
    .up_rx_addr (up_rx_addr_12),
    .up_rx_wr (up_rx_wr_12),
    .up_rx_wdata (up_rx_wdata_12),
    .up_rx_rdata (up_rx_rdata_12),
    .up_rx_ready (up_rx_ready_12),
    .up_tx_pll_locked (up_tx_pll_locked_12),
    .up_tx_rst (up_tx_rst_12),
    .up_tx_user_ready (up_tx_user_ready_12),
    .up_tx_rst_done (up_tx_rst_done_12),
    .up_tx_bufstatus (up_tx_bufstatus_12),
    .up_tx_prbsforceerr (up_tx_prbsforceerr_12),
    .up_tx_prbssel (up_tx_prbssel_12),
    .up_tx_lpm_dfe_n (up_tx_lpm_dfe_n_12),
    .up_tx_rate (up_tx_rate_12),
    .up_tx_sys_clk_sel (up_tx_sys_clk_sel_12),
    .up_tx_out_clk_sel (up_tx_out_clk_sel_12),
    .up_tx_diffctrl (up_tx_diffctrl_12),
    .up_tx_postcursor (up_tx_postcursor_12),
    .up_tx_precursor (up_tx_precursor_12),
    .up_tx_enb (up_tx_enb_12),
    .up_tx_addr (up_tx_addr_12),
    .up_tx_wr (up_tx_wr_12),
    .up_tx_wdata (up_tx_wdata_12),
    .up_tx_rdata (up_tx_rdata_12),
    .up_tx_ready (up_tx_ready_12));
  end else begin
  assign rx_out_clk_12 = 1'd0;
  assign rx_charisk_12 = 4'd0;
  assign rx_disperr_12 = 4'd0;
  assign rx_notintable_12 = 4'd0;
  assign rx_data_12 = 32'd0;
  assign tx_12_p = 1'd0;
  assign tx_12_n = 1'd0;
  assign tx_out_clk_12 = 1'd0;
  assign up_es_rdata_12 = 16'd0;
  assign up_es_ready_12 = 1'd0;
  assign up_rx_pll_locked_12 = 1'd0;
  assign up_rx_rst_done_12 = 1'd0;
  assign up_rx_rdata_12 = 16'd0;
  assign up_rx_ready_12 = 1'd0;
  assign up_tx_pll_locked_12 = 1'd0;
  assign up_tx_rst_done_12 = 1'd0;
  assign up_tx_rdata_12 = 16'd0;
  assign up_tx_ready_12 = 1'd0;
  end
  endgenerate

  generate
  if (NUM_OF_LANES >= 14) begin
  util_adxcvr_xch #(
    .XCVR_TYPE (XCVR_TYPE),
    .LINK_MODE (LINK_MODE),
    .DATA_PATH_WIDTH (DATA_PATH_WIDTH),
    .CPLL_FBDIV (CPLL_FBDIV),
    .CPLL_FBDIV_4_5 (CPLL_FBDIV_4_5),
    .CPLL_CFG0 (CPLL_CFG0),
    .CPLL_CFG1 (CPLL_CFG1),
    .CPLL_CFG2 (CPLL_CFG2),
    .CPLL_CFG3 (CPLL_CFG3),
    .TX_OUT_DIV (TX_OUT_DIV),
    .TX_CLK25_DIV (TX_CLK25_DIV),
    .TX_POLARITY ((TX_LANE_INVERT >> 13) & 1),
    .TX_PI_BIASSET (TX_PI_BIASSET),
    .TXPI_CFG (TXPI_CFG),
    .A_TXDIFFCTRL (A_TXDIFFCTRL),
    .RX_OUT_DIV (RX_OUT_DIV),
    .RX_CLK25_DIV (RX_CLK25_DIV),
    .RX_DFE_LPM_CFG (RX_DFE_LPM_CFG),
    .RX_PMA_CFG (RX_PMA_CFG),
    .RX_CDR_CFG (RX_CDR_CFG),
    .RX_POLARITY ((RX_LANE_INVERT >> 13) & 1),
    .RXCDR_CFG0 (RXCDR_CFG0),
    .RXCDR_CFG2 (RXCDR_CFG2),
    .RXCDR_CFG2_GEN2 (RXCDR_CFG2_GEN2),
    .RXCDR_CFG2_GEN4 (RXCDR_CFG2_GEN4),
    .RXCDR_CFG3 (RXCDR_CFG3),
    .RXCDR_CFG3_GEN2 (RXCDR_CFG3_GEN2),
    .RXCDR_CFG3_GEN3 (RXCDR_CFG3_GEN3),
    .RXCDR_CFG3_GEN4 (RXCDR_CFG3_GEN4),
    .RXDFE_KH_CFG2 (RXDFE_KH_CFG2),
    .RXDFE_KH_CFG3 (RXDFE_KH_CFG3),
    .RX_WIDEMODE_CDR (RX_WIDEMODE_CDR),
    .RX_XMODE_SEL (RX_XMODE_SEL),
    .TXDRV_FREQBAND (TXDRV_FREQBAND),
    .TXFE_CFG0 (TXFE_CFG0),
    .TXFE_CFG1 (TXFE_CFG1),
    .TXFE_CFG2 (TXFE_CFG2),
    .TXFE_CFG3 (TXFE_CFG3),
    .TXPI_CFG0 (TXPI_CFG0),
    .TXPI_CFG1 (TXPI_CFG1),
    .TXSWBST_EN (TXSWBST_EN),
    .CH_HSPMUX (CH_HSPMUX),
    .PREIQ_FREQ_BST (PREIQ_FREQ_BST),
    .RXPI_CFG0 (RXPI_CFG0),
    .RXPI_CFG1 (RXPI_CFG1),
    .RTX_BUF_CML_CTRL (RTX_BUF_CML_CTRL)
  ) i_xch_13 (
    .qpll2ch_clk (qpll2ch_clk_12),
    .qpll2ch_ref_clk (qpll2ch_ref_clk_12),
    .qpll2ch_locked (qpll2ch_locked_12),
    .qpll1_clk (qpll1_clk_12),
    .qpll1_ref_clk (qpll1_ref_clk_12),
    .qpll1_locked (qpll1_locked_12),
    .cpll_ref_clk (cpll_ref_clk_13),
    .up_cpll_rst (up_cpll_rst_13),
    .rx_p (rx_13_p),
    .rx_n (rx_13_n),
    .rx_out_clk (rx_out_clk_13),
    .rx_out_clk_div2 (rx_out_clk_div2_13),
    .rx_clk (rx_clk_13),
    .rx_clk_2x (rx_clk_2x_13),
    .rx_charisk (rx_charisk_13),
    .rx_disperr (rx_disperr_13),
    .rx_notintable (rx_notintable_13),
    .rx_data (rx_data_13),
    .rx_calign (rx_calign_13),
    .rx_header(rx_header_13),
    .rx_block_sync(rx_block_sync_13),
    .tx_p (tx_13_p),
    .tx_n (tx_13_n),
    .tx_out_clk (tx_out_clk_13),
    .tx_out_clk_div2 (tx_out_clk_div2_13),
    .tx_clk (tx_clk_13),
    .tx_clk_2x (tx_clk_2x_13),
    .tx_charisk (tx_charisk_13),
    .tx_data (tx_data_13),
    .tx_header (tx_header_13),
    .up_rstn (up_rstn),
    .up_clk (up_clk),
    .up_es_enb (up_es_enb_13),
    .up_es_addr (up_es_addr_13),
    .up_es_wr (up_es_wr_13),
    .up_es_wdata (up_es_wdata_13),
    .up_es_rdata (up_es_rdata_13),
    .up_es_ready (up_es_ready_13),
    .up_es_reset (up_es_reset_13),
    .up_rx_pll_locked (up_rx_pll_locked_13),
    .up_rx_rst (up_rx_rst_13),
    .up_rx_user_ready (up_rx_user_ready_13),
    .up_rx_rst_done (up_rx_rst_done_13),
    .up_rx_prbssel (up_rx_prbssel_13),
    .up_rx_prbscntreset (up_rx_prbscntreset_13),
    .up_rx_prbserr (up_rx_prbserr_13),
    .up_rx_prbslocked (up_rx_prbslocked_13),
    .up_rx_bufstatus (up_rx_bufstatus_13),
    .up_rx_bufstatus_rst (up_rx_bufstatus_rst_13),
    .up_rx_lpm_dfe_n (up_rx_lpm_dfe_n_13),
    .up_rx_rate (up_rx_rate_13),
    .up_rx_sys_clk_sel (up_rx_sys_clk_sel_13),
    .up_rx_out_clk_sel (up_rx_out_clk_sel_13),
    .up_rx_enb (up_rx_enb_13),
    .up_rx_addr (up_rx_addr_13),
    .up_rx_wr (up_rx_wr_13),
    .up_rx_wdata (up_rx_wdata_13),
    .up_rx_rdata (up_rx_rdata_13),
    .up_rx_ready (up_rx_ready_13),
    .up_tx_pll_locked (up_tx_pll_locked_13),
    .up_tx_rst (up_tx_rst_13),
    .up_tx_user_ready (up_tx_user_ready_13),
    .up_tx_rst_done (up_tx_rst_done_13),
    .up_tx_bufstatus (up_tx_bufstatus_13),
    .up_tx_prbsforceerr (up_tx_prbsforceerr_13),
    .up_tx_prbssel (up_tx_prbssel_13),
    .up_tx_lpm_dfe_n (up_tx_lpm_dfe_n_13),
    .up_tx_rate (up_tx_rate_13),
    .up_tx_sys_clk_sel (up_tx_sys_clk_sel_13),
    .up_tx_out_clk_sel (up_tx_out_clk_sel_13),
    .up_tx_diffctrl (up_tx_diffctrl_13),
    .up_tx_postcursor (up_tx_postcursor_13),
    .up_tx_precursor (up_tx_precursor_13),
    .up_tx_enb (up_tx_enb_13),
    .up_tx_addr (up_tx_addr_13),
    .up_tx_wr (up_tx_wr_13),
    .up_tx_wdata (up_tx_wdata_13),
    .up_tx_rdata (up_tx_rdata_13),
    .up_tx_ready (up_tx_ready_13));
  end else begin
  assign rx_out_clk_13 = 1'd0;
  assign rx_charisk_13 = 4'd0;
  assign rx_disperr_13 = 4'd0;
  assign rx_notintable_13 = 4'd0;
  assign rx_data_13 = 32'd0;
  assign tx_13_p = 1'd0;
  assign tx_13_n = 1'd0;
  assign tx_out_clk_13 = 1'd0;
  assign up_es_rdata_13 = 16'd0;
  assign up_es_ready_13 = 1'd0;
  assign up_rx_pll_locked_13 = 1'd0;
  assign up_rx_rst_done_13 = 1'd0;
  assign up_rx_rdata_13 = 16'd0;
  assign up_rx_ready_13 = 1'd0;
  assign up_tx_pll_locked_13 = 1'd0;
  assign up_tx_rst_done_13 = 1'd0;
  assign up_tx_rdata_13 = 16'd0;
  assign up_tx_ready_13 = 1'd0;
  end
  endgenerate

  generate
  if (NUM_OF_LANES >= 15) begin
  util_adxcvr_xch #(
    .XCVR_TYPE (XCVR_TYPE),
    .LINK_MODE (LINK_MODE),
    .DATA_PATH_WIDTH (DATA_PATH_WIDTH),
    .CPLL_FBDIV (CPLL_FBDIV),
    .CPLL_FBDIV_4_5 (CPLL_FBDIV_4_5),
    .CPLL_CFG0 (CPLL_CFG0),
    .CPLL_CFG1 (CPLL_CFG1),
    .CPLL_CFG2 (CPLL_CFG2),
    .CPLL_CFG3 (CPLL_CFG3),
    .TX_OUT_DIV (TX_OUT_DIV),
    .TX_CLK25_DIV (TX_CLK25_DIV),
    .TX_POLARITY ((TX_LANE_INVERT >> 14) & 1),
    .TX_PI_BIASSET (TX_PI_BIASSET),
    .TXPI_CFG (TXPI_CFG),
    .A_TXDIFFCTRL (A_TXDIFFCTRL),
    .RX_OUT_DIV (RX_OUT_DIV),
    .RX_CLK25_DIV (RX_CLK25_DIV),
    .RX_DFE_LPM_CFG (RX_DFE_LPM_CFG),
    .RX_PMA_CFG (RX_PMA_CFG),
    .RX_CDR_CFG (RX_CDR_CFG),
    .RX_POLARITY ((RX_LANE_INVERT >> 14) & 1),
    .RXCDR_CFG0 (RXCDR_CFG0),
    .RXCDR_CFG2 (RXCDR_CFG2),
    .RXCDR_CFG2_GEN2 (RXCDR_CFG2_GEN2),
    .RXCDR_CFG2_GEN4 (RXCDR_CFG2_GEN4),
    .RXCDR_CFG3 (RXCDR_CFG3),
    .RXCDR_CFG3_GEN2 (RXCDR_CFG3_GEN2),
    .RXCDR_CFG3_GEN3 (RXCDR_CFG3_GEN3),
    .RXCDR_CFG3_GEN4 (RXCDR_CFG3_GEN4),
    .RXDFE_KH_CFG2 (RXDFE_KH_CFG2),
    .RXDFE_KH_CFG3 (RXDFE_KH_CFG3),
    .RX_WIDEMODE_CDR (RX_WIDEMODE_CDR),
    .RX_XMODE_SEL (RX_XMODE_SEL),
    .TXDRV_FREQBAND (TXDRV_FREQBAND),
    .TXFE_CFG0 (TXFE_CFG0),
    .TXFE_CFG1 (TXFE_CFG1),
    .TXFE_CFG2 (TXFE_CFG2),
    .TXFE_CFG3 (TXFE_CFG3),
    .TXPI_CFG0 (TXPI_CFG0),
    .TXPI_CFG1 (TXPI_CFG1),
    .TXSWBST_EN (TXSWBST_EN),
    .CH_HSPMUX (CH_HSPMUX),
    .PREIQ_FREQ_BST (PREIQ_FREQ_BST),
    .RXPI_CFG0 (RXPI_CFG0),
    .RXPI_CFG1 (RXPI_CFG1),
    .RTX_BUF_CML_CTRL (RTX_BUF_CML_CTRL)
  ) i_xch_14 (
    .qpll2ch_clk (qpll2ch_clk_12),
    .qpll2ch_ref_clk (qpll2ch_ref_clk_12),
    .qpll2ch_locked (qpll2ch_locked_12),
    .qpll1_clk (qpll1_clk_12),
    .qpll1_ref_clk (qpll1_ref_clk_12),
    .qpll1_locked (qpll1_locked_12),
    .cpll_ref_clk (cpll_ref_clk_14),
    .up_cpll_rst (up_cpll_rst_14),
    .rx_p (rx_14_p),
    .rx_n (rx_14_n),
    .rx_out_clk (rx_out_clk_14),
    .rx_out_clk_div2 (rx_out_clk_div2_14),
    .rx_clk (rx_clk_14),
    .rx_clk_2x (rx_clk_2x_14),
    .rx_charisk (rx_charisk_14),
    .rx_disperr (rx_disperr_14),
    .rx_notintable (rx_notintable_14),
    .rx_data (rx_data_14),
    .rx_calign (rx_calign_14),
    .rx_header(rx_header_14),
    .rx_block_sync(rx_block_sync_14),
    .tx_p (tx_14_p),
    .tx_n (tx_14_n),
    .tx_out_clk (tx_out_clk_14),
    .tx_out_clk_div2 (tx_out_clk_div2_14),
    .tx_clk (tx_clk_14),
    .tx_clk_2x (tx_clk_2x_14),
    .tx_charisk (tx_charisk_14),
    .tx_data (tx_data_14),
    .tx_header (tx_header_14),
    .up_rstn (up_rstn),
    .up_clk (up_clk),
    .up_es_enb (up_es_enb_14),
    .up_es_addr (up_es_addr_14),
    .up_es_wr (up_es_wr_14),
    .up_es_wdata (up_es_wdata_14),
    .up_es_rdata (up_es_rdata_14),
    .up_es_ready (up_es_ready_14),
    .up_es_reset (up_es_reset_14),
    .up_rx_pll_locked (up_rx_pll_locked_14),
    .up_rx_rst (up_rx_rst_14),
    .up_rx_user_ready (up_rx_user_ready_14),
    .up_rx_rst_done (up_rx_rst_done_14),
    .up_rx_prbssel (up_rx_prbssel_14),
    .up_rx_prbscntreset (up_rx_prbscntreset_14),
    .up_rx_prbserr (up_rx_prbserr_14),
    .up_rx_prbslocked (up_rx_prbslocked_14),
    .up_rx_bufstatus (up_rx_bufstatus_14),
    .up_rx_bufstatus_rst (up_rx_bufstatus_rst_14),
    .up_rx_lpm_dfe_n (up_rx_lpm_dfe_n_14),
    .up_rx_rate (up_rx_rate_14),
    .up_rx_sys_clk_sel (up_rx_sys_clk_sel_14),
    .up_rx_out_clk_sel (up_rx_out_clk_sel_14),
    .up_rx_enb (up_rx_enb_14),
    .up_rx_addr (up_rx_addr_14),
    .up_rx_wr (up_rx_wr_14),
    .up_rx_wdata (up_rx_wdata_14),
    .up_rx_rdata (up_rx_rdata_14),
    .up_rx_ready (up_rx_ready_14),
    .up_tx_pll_locked (up_tx_pll_locked_14),
    .up_tx_rst (up_tx_rst_14),
    .up_tx_user_ready (up_tx_user_ready_14),
    .up_tx_rst_done (up_tx_rst_done_14),
    .up_tx_bufstatus (up_tx_bufstatus_14),
    .up_tx_prbsforceerr (up_tx_prbsforceerr_14),
    .up_tx_prbssel (up_tx_prbssel_14),
    .up_tx_lpm_dfe_n (up_tx_lpm_dfe_n_14),
    .up_tx_rate (up_tx_rate_14),
    .up_tx_sys_clk_sel (up_tx_sys_clk_sel_14),
    .up_tx_out_clk_sel (up_tx_out_clk_sel_14),
    .up_tx_diffctrl (up_tx_diffctrl_14),
    .up_tx_postcursor (up_tx_postcursor_14),
    .up_tx_precursor (up_tx_precursor_14),
    .up_tx_enb (up_tx_enb_14),
    .up_tx_addr (up_tx_addr_14),
    .up_tx_wr (up_tx_wr_14),
    .up_tx_wdata (up_tx_wdata_14),
    .up_tx_rdata (up_tx_rdata_14),
    .up_tx_ready (up_tx_ready_14));
  end else begin
  assign rx_out_clk_14 = 1'd0;
  assign rx_charisk_14 = 4'd0;
  assign rx_disperr_14 = 4'd0;
  assign rx_notintable_14 = 4'd0;
  assign rx_data_14 = 32'd0;
  assign tx_14_p = 1'd0;
  assign tx_14_n = 1'd0;
  assign tx_out_clk_14 = 1'd0;
  assign up_es_rdata_14 = 16'd0;
  assign up_es_ready_14 = 1'd0;
  assign up_rx_pll_locked_14 = 1'd0;
  assign up_rx_rst_done_14 = 1'd0;
  assign up_rx_rdata_14 = 16'd0;
  assign up_rx_ready_14 = 1'd0;
  assign up_tx_pll_locked_14 = 1'd0;
  assign up_tx_rst_done_14 = 1'd0;
  assign up_tx_rdata_14 = 16'd0;
  assign up_tx_ready_14 = 1'd0;
  end
  endgenerate

  generate
  if (NUM_OF_LANES >= 16) begin
  util_adxcvr_xch #(
    .XCVR_TYPE (XCVR_TYPE),
    .LINK_MODE (LINK_MODE),
    .DATA_PATH_WIDTH (DATA_PATH_WIDTH),
    .CPLL_FBDIV (CPLL_FBDIV),
    .CPLL_FBDIV_4_5 (CPLL_FBDIV_4_5),
    .CPLL_CFG0 (CPLL_CFG0),
    .CPLL_CFG1 (CPLL_CFG1),
    .CPLL_CFG2 (CPLL_CFG2),
    .CPLL_CFG3 (CPLL_CFG3),
    .TX_OUT_DIV (TX_OUT_DIV),
    .TX_CLK25_DIV (TX_CLK25_DIV),
    .TX_POLARITY ((TX_LANE_INVERT >> 15) & 1),
    .TX_PI_BIASSET (TX_PI_BIASSET),
    .TXPI_CFG (TXPI_CFG),
    .A_TXDIFFCTRL (A_TXDIFFCTRL),
    .RX_OUT_DIV (RX_OUT_DIV),
    .RX_CLK25_DIV (RX_CLK25_DIV),
    .RX_DFE_LPM_CFG (RX_DFE_LPM_CFG),
    .RX_PMA_CFG (RX_PMA_CFG),
    .RX_CDR_CFG (RX_CDR_CFG),
    .RX_POLARITY ((RX_LANE_INVERT >> 15) & 1),
    .RXCDR_CFG0 (RXCDR_CFG0),
    .RXCDR_CFG2 (RXCDR_CFG2),
    .RXCDR_CFG2_GEN2 (RXCDR_CFG2_GEN2),
    .RXCDR_CFG2_GEN4 (RXCDR_CFG2_GEN4),
    .RXCDR_CFG3 (RXCDR_CFG3),
    .RXCDR_CFG3_GEN2 (RXCDR_CFG3_GEN2),
    .RXCDR_CFG3_GEN3 (RXCDR_CFG3_GEN3),
    .RXCDR_CFG3_GEN4 (RXCDR_CFG3_GEN4),
    .RXDFE_KH_CFG2 (RXDFE_KH_CFG2),
    .RXDFE_KH_CFG3 (RXDFE_KH_CFG3),
    .RX_WIDEMODE_CDR (RX_WIDEMODE_CDR),
    .RX_XMODE_SEL (RX_XMODE_SEL),
    .TXDRV_FREQBAND (TXDRV_FREQBAND),
    .TXFE_CFG0 (TXFE_CFG0),
    .TXFE_CFG1 (TXFE_CFG1),
    .TXFE_CFG2 (TXFE_CFG2),
    .TXFE_CFG3 (TXFE_CFG3),
    .TXPI_CFG0 (TXPI_CFG0),
    .TXPI_CFG1 (TXPI_CFG1),
    .TXSWBST_EN (TXSWBST_EN),
    .CH_HSPMUX (CH_HSPMUX),
    .PREIQ_FREQ_BST (PREIQ_FREQ_BST),
    .RXPI_CFG0 (RXPI_CFG0),
    .RXPI_CFG1 (RXPI_CFG1),
    .RTX_BUF_CML_CTRL (RTX_BUF_CML_CTRL)
  ) i_xch_15 (
    .qpll2ch_clk (qpll2ch_clk_12),
    .qpll2ch_ref_clk (qpll2ch_ref_clk_12),
    .qpll2ch_locked (qpll2ch_locked_12),
    .qpll1_clk (qpll1_clk_12),
    .qpll1_ref_clk (qpll1_ref_clk_12),
    .qpll1_locked (qpll1_locked_12),
    .cpll_ref_clk (cpll_ref_clk_15),
    .up_cpll_rst (up_cpll_rst_15),
    .rx_p (rx_15_p),
    .rx_n (rx_15_n),
    .rx_out_clk (rx_out_clk_15),
    .rx_out_clk_div2 (rx_out_clk_div2_15),
    .rx_clk (rx_clk_15),
    .rx_clk_2x (rx_clk_2x_15),
    .rx_charisk (rx_charisk_15),
    .rx_disperr (rx_disperr_15),
    .rx_notintable (rx_notintable_15),
    .rx_data (rx_data_15),
    .rx_calign (rx_calign_15),
    .rx_header(rx_header_15),
    .rx_block_sync(rx_block_sync_15),
    .tx_p (tx_15_p),
    .tx_n (tx_15_n),
    .tx_out_clk (tx_out_clk_15),
    .tx_out_clk_div2 (tx_out_clk_div2_15),
    .tx_clk (tx_clk_15),
    .tx_clk_2x (tx_clk_2x_15),
    .tx_charisk (tx_charisk_15),
    .tx_data (tx_data_15),
    .tx_header (tx_header_15),
    .up_rstn (up_rstn),
    .up_clk (up_clk),
    .up_es_enb (up_es_enb_15),
    .up_es_addr (up_es_addr_15),
    .up_es_wr (up_es_wr_15),
    .up_es_wdata (up_es_wdata_15),
    .up_es_rdata (up_es_rdata_15),
    .up_es_ready (up_es_ready_15),
    .up_es_reset (up_es_reset_15),
    .up_rx_pll_locked (up_rx_pll_locked_15),
    .up_rx_rst (up_rx_rst_15),
    .up_rx_user_ready (up_rx_user_ready_15),
    .up_rx_rst_done (up_rx_rst_done_15),
    .up_rx_prbssel (up_rx_prbssel_15),
    .up_rx_prbscntreset (up_rx_prbscntreset_15),
    .up_rx_prbserr (up_rx_prbserr_15),
    .up_rx_prbslocked (up_rx_prbslocked_15),
    .up_rx_bufstatus (up_rx_bufstatus_15),
    .up_rx_bufstatus_rst (up_rx_bufstatus_rst_15),
    .up_rx_lpm_dfe_n (up_rx_lpm_dfe_n_15),
    .up_rx_rate (up_rx_rate_15),
    .up_rx_sys_clk_sel (up_rx_sys_clk_sel_15),
    .up_rx_out_clk_sel (up_rx_out_clk_sel_15),
    .up_rx_enb (up_rx_enb_15),
    .up_rx_addr (up_rx_addr_15),
    .up_rx_wr (up_rx_wr_15),
    .up_rx_wdata (up_rx_wdata_15),
    .up_rx_rdata (up_rx_rdata_15),
    .up_rx_ready (up_rx_ready_15),
    .up_tx_pll_locked (up_tx_pll_locked_15),
    .up_tx_rst (up_tx_rst_15),
    .up_tx_user_ready (up_tx_user_ready_15),
    .up_tx_rst_done (up_tx_rst_done_15),
    .up_tx_bufstatus (up_tx_bufstatus_15),
    .up_tx_prbsforceerr (up_tx_prbsforceerr_15),
    .up_tx_prbssel (up_tx_prbssel_15),
    .up_tx_lpm_dfe_n (up_tx_lpm_dfe_n_15),
    .up_tx_rate (up_tx_rate_15),
    .up_tx_sys_clk_sel (up_tx_sys_clk_sel_15),
    .up_tx_out_clk_sel (up_tx_out_clk_sel_15),
    .up_tx_diffctrl (up_tx_diffctrl_15),
    .up_tx_postcursor (up_tx_postcursor_15),
    .up_tx_precursor (up_tx_precursor_15),
    .up_tx_enb (up_tx_enb_15),
    .up_tx_addr (up_tx_addr_15),
    .up_tx_wr (up_tx_wr_15),
    .up_tx_wdata (up_tx_wdata_15),
    .up_tx_rdata (up_tx_rdata_15),
    .up_tx_ready (up_tx_ready_15));
  end else begin
  assign rx_out_clk_15 = 1'd0;
  assign rx_charisk_15 = 4'd0;
  assign rx_disperr_15 = 4'd0;
  assign rx_notintable_15 = 4'd0;
  assign rx_data_15 = 32'd0;
  assign tx_15_p = 1'd0;
  assign tx_15_n = 1'd0;
  assign tx_out_clk_15 = 1'd0;
  assign up_es_rdata_15 = 16'd0;
  assign up_es_ready_15 = 1'd0;
  assign up_rx_pll_locked_15 = 1'd0;
  assign up_rx_rst_done_15 = 1'd0;
  assign up_rx_rdata_15 = 16'd0;
  assign up_rx_ready_15 = 1'd0;
  assign up_tx_pll_locked_15 = 1'd0;
  assign up_tx_rst_done_15 = 1'd0;
  assign up_tx_rdata_15 = 16'd0;
  assign up_tx_ready_15 = 1'd0;
  end
  endgenerate

  generate
  if (NUM_OF_LANES >= 17) begin
  util_adxcvr_xcm #(
    .XCVR_TYPE (XCVR_TYPE),
    .QPLL_REFCLK_DIV (QPLL_REFCLK_DIV),
    .QPLL_FBDIV_RATIO (QPLL_FBDIV_RATIO),
    .POR_CFG (POR_CFG),
    .PPF0_CFG (PPF0_CFG),
    .PPF1_CFG (PPF1_CFG),
    .QPLL_CFG (QPLL_CFG),
    .QPLL_FBDIV (QPLL_FBDIV),
    .QPLL_CFG0 (QPLL_CFG0),
    .QPLL_CFG1 (QPLL_CFG1),
    .QPLL_CFG1_G3 (QPLL_CFG1_G3),
    .QPLL_CFG2 (QPLL_CFG2),
    .QPLL_CFG2_G3 (QPLL_CFG2_G3),
    .QPLL_CFG3 (QPLL_CFG3),
    .QPLL_CP_G3 (QPLL_CP_G3),
    .QPLL_LPF (QPLL_LPF),
    .QPLL_CP (QPLL_CP),
    .QPLL_CFG4 (QPLL_CFG4)
  ) i_xcm_16 (
    .qpll_ref_clk (qpll_ref_clk_16),
    .qpll_sel (qpll_sel_16),
    .qpll2ch_clk (qpll2ch_clk_16),
    .qpll2ch_ref_clk (qpll2ch_ref_clk_16),
    .qpll2ch_locked (qpll2ch_locked_16),
    .qpll1_clk (qpll1_clk_16),
    .qpll1_ref_clk (qpll1_ref_clk_16),
    .qpll1_locked (qpll1_locked_16),
    .up_rstn (up_rstn),
    .up_clk (up_clk),
    .up_qpll_rst (up_qpll_rst_16),
    .up_cm_enb (up_cm_enb_16),
    .up_cm_addr (up_cm_addr_16),
    .up_cm_wr (up_cm_wr_16),
    .up_cm_wdata (up_cm_wdata_16),
    .up_cm_rdata (up_cm_rdata_16),
    .up_cm_ready (up_cm_ready_16));
  end else begin
  assign qpll2ch_clk_16 = 1'd0;
  assign qpll2ch_ref_clk_16 = 1'd0;
  assign qpll2ch_locked_16 = 1'd0;
  assign qpll1_clk_16 = 1'd0;
  assign qpll1_ref_clk_16 = 1'd0;
  assign qpll1_locked_16 = 1'd0;
  assign up_cm_rdata_16 = 16'd0;
  assign up_cm_ready_16 = 1'd0;
  end
  endgenerate

  generate
  if (NUM_OF_LANES >= 17) begin
  util_adxcvr_xch #(
    .XCVR_TYPE (XCVR_TYPE),
    .LINK_MODE (LINK_MODE),
    .DATA_PATH_WIDTH (DATA_PATH_WIDTH),
    .CPLL_FBDIV (CPLL_FBDIV),
    .CPLL_FBDIV_4_5 (CPLL_FBDIV_4_5),
    .CPLL_CFG0 (CPLL_CFG0),
    .CPLL_CFG1 (CPLL_CFG1),
    .CPLL_CFG2 (CPLL_CFG2),
    .CPLL_CFG3 (CPLL_CFG3),
    .TX_OUT_DIV (TX_OUT_DIV),
    .TX_CLK25_DIV (TX_CLK25_DIV),
    .TX_POLARITY ((TX_LANE_INVERT >> 16) & 1),
    .TX_PI_BIASSET (TX_PI_BIASSET),
    .TXPI_CFG (TXPI_CFG),
    .A_TXDIFFCTRL (A_TXDIFFCTRL),
    .RX_OUT_DIV (RX_OUT_DIV),
    .RX_CLK25_DIV (RX_CLK25_DIV),
    .RX_DFE_LPM_CFG (RX_DFE_LPM_CFG),
    .RX_PMA_CFG (RX_PMA_CFG),
    .RX_CDR_CFG (RX_CDR_CFG),
    .RX_POLARITY ((RX_LANE_INVERT >> 16) & 1),
    .RXCDR_CFG0 (RXCDR_CFG0),
    .RXCDR_CFG2 (RXCDR_CFG2),
    .RXCDR_CFG2_GEN2 (RXCDR_CFG2_GEN2),
    .RXCDR_CFG2_GEN4 (RXCDR_CFG2_GEN4),
    .RXCDR_CFG3 (RXCDR_CFG3),
    .RXCDR_CFG3_GEN2 (RXCDR_CFG3_GEN2),
    .RXCDR_CFG3_GEN3 (RXCDR_CFG3_GEN3),
    .RXCDR_CFG3_GEN4 (RXCDR_CFG3_GEN4),
    .RXDFE_KH_CFG2 (RXDFE_KH_CFG2),
    .RXDFE_KH_CFG3 (RXDFE_KH_CFG3),
    .RX_WIDEMODE_CDR (RX_WIDEMODE_CDR),
    .RX_XMODE_SEL (RX_XMODE_SEL),
    .TXDRV_FREQBAND (TXDRV_FREQBAND),
    .TXFE_CFG0 (TXFE_CFG0),
    .TXFE_CFG1 (TXFE_CFG1),
    .TXFE_CFG2 (TXFE_CFG2),
    .TXFE_CFG3 (TXFE_CFG3),
    .TXPI_CFG0 (TXPI_CFG0),
    .TXPI_CFG1 (TXPI_CFG1),
    .TXSWBST_EN (TXSWBST_EN),
    .CH_HSPMUX (CH_HSPMUX),
    .PREIQ_FREQ_BST (PREIQ_FREQ_BST),
    .RXPI_CFG0 (RXPI_CFG0),
    .RXPI_CFG1 (RXPI_CFG1),
    .RTX_BUF_CML_CTRL (RTX_BUF_CML_CTRL)
  ) i_xch_16 (
    .qpll2ch_clk (qpll2ch_clk_16),
    .qpll2ch_ref_clk (qpll2ch_ref_clk_16),
    .qpll2ch_locked (qpll2ch_locked_16),
    .qpll1_clk (qpll1_clk_16),
    .qpll1_ref_clk (qpll1_ref_clk_16),
    .qpll1_locked (qpll1_locked_16),
    .cpll_ref_clk (cpll_ref_clk_16),
    .up_cpll_rst (up_cpll_rst_16),
    .rx_p (rx_16_p),
    .rx_n (rx_16_n),
    .rx_out_clk (rx_out_clk_16),
    .rx_out_clk_div2 (rx_out_clk_div2_16),
    .rx_clk (rx_clk_16),
    .rx_clk_2x (rx_clk_2x_16),
    .rx_charisk (rx_charisk_16),
    .rx_disperr (rx_disperr_16),
    .rx_notintable (rx_notintable_16),
    .rx_data (rx_data_16),
    .rx_calign (rx_calign_16),
    .rx_header(rx_header_16),
    .rx_block_sync(rx_block_sync_16),
    .tx_p (tx_16_p),
    .tx_n (tx_16_n),
    .tx_out_clk (tx_out_clk_16),
    .tx_out_clk_div2 (tx_out_clk_div2_16),
    .tx_clk (tx_clk_16),
    .tx_clk_2x (tx_clk_2x_16),
    .tx_charisk (tx_charisk_16),
    .tx_data (tx_data_16),
    .tx_header (tx_header_16),
    .up_rstn (up_rstn),
    .up_clk (up_clk),
    .up_es_enb (up_es_enb_16),
    .up_es_addr (up_es_addr_16),
    .up_es_wr (up_es_wr_16),
    .up_es_wdata (up_es_wdata_16),
    .up_es_rdata (up_es_rdata_16),
    .up_es_ready (up_es_ready_16),
    .up_es_reset (up_es_reset_16),
    .up_rx_pll_locked (up_rx_pll_locked_16),
    .up_rx_rst (up_rx_rst_16),
    .up_rx_user_ready (up_rx_user_ready_16),
    .up_rx_rst_done (up_rx_rst_done_16),
    .up_rx_prbssel (up_rx_prbssel_16),
    .up_rx_prbscntreset (up_rx_prbscntreset_16),
    .up_rx_prbserr (up_rx_prbserr_16),
    .up_rx_prbslocked (up_rx_prbslocked_16),
    .up_rx_bufstatus (up_rx_bufstatus_16),
    .up_rx_bufstatus_rst (up_rx_bufstatus_rst_16),
    .up_rx_lpm_dfe_n (up_rx_lpm_dfe_n_16),
    .up_rx_rate (up_rx_rate_16),
    .up_rx_sys_clk_sel (up_rx_sys_clk_sel_16),
    .up_rx_out_clk_sel (up_rx_out_clk_sel_16),
    .up_rx_enb (up_rx_enb_16),
    .up_rx_addr (up_rx_addr_16),
    .up_rx_wr (up_rx_wr_16),
    .up_rx_wdata (up_rx_wdata_16),
    .up_rx_rdata (up_rx_rdata_16),
    .up_rx_ready (up_rx_ready_16),
    .up_tx_pll_locked (up_tx_pll_locked_16),
    .up_tx_rst (up_tx_rst_16),
    .up_tx_user_ready (up_tx_user_ready_16),
    .up_tx_rst_done (up_tx_rst_done_16),
    .up_tx_bufstatus (up_tx_bufstatus_16),
    .up_tx_prbsforceerr (up_tx_prbsforceerr_16),
    .up_tx_prbssel (up_tx_prbssel_16),
    .up_tx_lpm_dfe_n (up_tx_lpm_dfe_n_16),
    .up_tx_rate (up_tx_rate_16),
    .up_tx_sys_clk_sel (up_tx_sys_clk_sel_16),
    .up_tx_out_clk_sel (up_tx_out_clk_sel_16),
    .up_tx_diffctrl (up_tx_diffctrl_16),
    .up_tx_postcursor (up_tx_postcursor_16),
    .up_tx_precursor (up_tx_precursor_16),
    .up_tx_enb (up_tx_enb_16),
    .up_tx_addr (up_tx_addr_16),
    .up_tx_wr (up_tx_wr_16),
    .up_tx_wdata (up_tx_wdata_16),
    .up_tx_rdata (up_tx_rdata_16),
    .up_tx_ready (up_tx_ready_16));
  end else begin
  assign rx_out_clk_16 = 1'd0;
  assign rx_charisk_16 = 4'd0;
  assign rx_disperr_16 = 4'd0;
  assign rx_notintable_16 = 4'd0;
  assign rx_data_16 = 32'd0;
  assign tx_16_p = 1'd0;
  assign tx_16_n = 1'd0;
  assign tx_out_clk_16 = 1'd0;
  assign up_es_rdata_16 = 16'd0;
  assign up_es_ready_16 = 1'd0;
  assign up_rx_pll_locked_16 = 1'd0;
  assign up_rx_rst_done_16 = 1'd0;
  assign up_rx_rdata_16 = 16'd0;
  assign up_rx_ready_16 = 1'd0;
  assign up_tx_pll_locked_16 = 1'd0;
  assign up_tx_rst_done_16 = 1'd0;
  assign up_tx_rdata_16 = 16'd0;
  assign up_tx_ready_16 = 1'd0;
  end
  endgenerate

  generate
  if (NUM_OF_LANES >= 18) begin
  util_adxcvr_xch #(
    .XCVR_TYPE (XCVR_TYPE),
    .LINK_MODE (LINK_MODE),
    .DATA_PATH_WIDTH (DATA_PATH_WIDTH),
    .CPLL_FBDIV (CPLL_FBDIV),
    .CPLL_FBDIV_4_5 (CPLL_FBDIV_4_5),
    .CPLL_CFG0 (CPLL_CFG0),
    .CPLL_CFG1 (CPLL_CFG1),
    .CPLL_CFG2 (CPLL_CFG2),
    .CPLL_CFG3 (CPLL_CFG3),
    .TX_OUT_DIV (TX_OUT_DIV),
    .TX_CLK25_DIV (TX_CLK25_DIV),
    .TX_POLARITY ((TX_LANE_INVERT >> 17) & 1),
    .TX_PI_BIASSET (TX_PI_BIASSET),
    .TXPI_CFG (TXPI_CFG),
    .A_TXDIFFCTRL (A_TXDIFFCTRL),
    .RX_OUT_DIV (RX_OUT_DIV),
    .RX_CLK25_DIV (RX_CLK25_DIV),
    .RX_DFE_LPM_CFG (RX_DFE_LPM_CFG),
    .RX_PMA_CFG (RX_PMA_CFG),
    .RX_CDR_CFG (RX_CDR_CFG),
    .RX_POLARITY ((RX_LANE_INVERT >> 17) & 1),
    .RXCDR_CFG0 (RXCDR_CFG0),
    .RXCDR_CFG2 (RXCDR_CFG2),
    .RXCDR_CFG2_GEN2 (RXCDR_CFG2_GEN2),
    .RXCDR_CFG2_GEN4 (RXCDR_CFG2_GEN4),
    .RXCDR_CFG3 (RXCDR_CFG3),
    .RXCDR_CFG3_GEN2 (RXCDR_CFG3_GEN2),
    .RXCDR_CFG3_GEN3 (RXCDR_CFG3_GEN3),
    .RXCDR_CFG3_GEN4 (RXCDR_CFG3_GEN4),
    .RXDFE_KH_CFG2 (RXDFE_KH_CFG2),
    .RXDFE_KH_CFG3 (RXDFE_KH_CFG3),
    .RX_WIDEMODE_CDR (RX_WIDEMODE_CDR),
    .RX_XMODE_SEL (RX_XMODE_SEL),
    .TXDRV_FREQBAND (TXDRV_FREQBAND),
    .TXFE_CFG0 (TXFE_CFG0),
    .TXFE_CFG1 (TXFE_CFG1),
    .TXFE_CFG2 (TXFE_CFG2),
    .TXFE_CFG3 (TXFE_CFG3),
    .TXPI_CFG0 (TXPI_CFG0),
    .TXPI_CFG1 (TXPI_CFG1),
    .TXSWBST_EN (TXSWBST_EN),
    .CH_HSPMUX (CH_HSPMUX),
    .PREIQ_FREQ_BST (PREIQ_FREQ_BST),
    .RXPI_CFG0 (RXPI_CFG0),
    .RXPI_CFG1 (RXPI_CFG1),
    .RTX_BUF_CML_CTRL (RTX_BUF_CML_CTRL)
  ) i_xch_17 (
    .qpll2ch_clk (qpll2ch_clk_16),
    .qpll2ch_ref_clk (qpll2ch_ref_clk_16),
    .qpll2ch_locked (qpll2ch_locked_16),
    .qpll1_clk (qpll1_clk_16),
    .qpll1_ref_clk (qpll1_ref_clk_16),
    .qpll1_locked (qpll1_locked_16),
    .cpll_ref_clk (cpll_ref_clk_17),
    .up_cpll_rst (up_cpll_rst_17),
    .rx_p (rx_17_p),
    .rx_n (rx_17_n),
    .rx_out_clk (rx_out_clk_17),
    .rx_out_clk_div2 (rx_out_clk_div2_17),
    .rx_clk (rx_clk_17),
    .rx_clk_2x (rx_clk_2x_17),
    .rx_charisk (rx_charisk_17),
    .rx_disperr (rx_disperr_17),
    .rx_notintable (rx_notintable_17),
    .rx_data (rx_data_17),
    .rx_calign (rx_calign_17),
    .rx_header(rx_header_17),
    .rx_block_sync(rx_block_sync_17),
    .tx_p (tx_17_p),
    .tx_n (tx_17_n),
    .tx_out_clk (tx_out_clk_17),
    .tx_out_clk_div2 (tx_out_clk_div2_17),
    .tx_clk (tx_clk_17),
    .tx_clk_2x (tx_clk_2x_17),
    .tx_charisk (tx_charisk_17),
    .tx_data (tx_data_17),
    .tx_header (tx_header_17),
    .up_rstn (up_rstn),
    .up_clk (up_clk),
    .up_es_enb (up_es_enb_17),
    .up_es_addr (up_es_addr_17),
    .up_es_wr (up_es_wr_17),
    .up_es_wdata (up_es_wdata_17),
    .up_es_rdata (up_es_rdata_17),
    .up_es_ready (up_es_ready_17),
    .up_es_reset (up_es_reset_17),
    .up_rx_pll_locked (up_rx_pll_locked_17),
    .up_rx_rst (up_rx_rst_17),
    .up_rx_user_ready (up_rx_user_ready_17),
    .up_rx_rst_done (up_rx_rst_done_17),
    .up_rx_prbssel (up_rx_prbssel_17),
    .up_rx_prbscntreset (up_rx_prbscntreset_17),
    .up_rx_prbserr (up_rx_prbserr_17),
    .up_rx_prbslocked (up_rx_prbslocked_17),
    .up_rx_bufstatus (up_rx_bufstatus_17),
    .up_rx_bufstatus_rst (up_rx_bufstatus_rst_17),
    .up_rx_lpm_dfe_n (up_rx_lpm_dfe_n_17),
    .up_rx_rate (up_rx_rate_17),
    .up_rx_sys_clk_sel (up_rx_sys_clk_sel_17),
    .up_rx_out_clk_sel (up_rx_out_clk_sel_17),
    .up_rx_enb (up_rx_enb_17),
    .up_rx_addr (up_rx_addr_17),
    .up_rx_wr (up_rx_wr_17),
    .up_rx_wdata (up_rx_wdata_17),
    .up_rx_rdata (up_rx_rdata_17),
    .up_rx_ready (up_rx_ready_17),
    .up_tx_pll_locked (up_tx_pll_locked_17),
    .up_tx_rst (up_tx_rst_17),
    .up_tx_user_ready (up_tx_user_ready_17),
    .up_tx_rst_done (up_tx_rst_done_17),
    .up_tx_bufstatus (up_tx_bufstatus_17),
    .up_tx_prbsforceerr (up_tx_prbsforceerr_17),
    .up_tx_prbssel (up_tx_prbssel_17),
    .up_tx_lpm_dfe_n (up_tx_lpm_dfe_n_17),
    .up_tx_rate (up_tx_rate_17),
    .up_tx_sys_clk_sel (up_tx_sys_clk_sel_17),
    .up_tx_out_clk_sel (up_tx_out_clk_sel_17),
    .up_tx_diffctrl (up_tx_diffctrl_17),
    .up_tx_postcursor (up_tx_postcursor_17),
    .up_tx_precursor (up_tx_precursor_17),
    .up_tx_enb (up_tx_enb_17),
    .up_tx_addr (up_tx_addr_17),
    .up_tx_wr (up_tx_wr_17),
    .up_tx_wdata (up_tx_wdata_17),
    .up_tx_rdata (up_tx_rdata_17),
    .up_tx_ready (up_tx_ready_17));
  end else begin
  assign rx_out_clk_17 = 1'd0;
  assign rx_charisk_17 = 4'd0;
  assign rx_disperr_17 = 4'd0;
  assign rx_notintable_17 = 4'd0;
  assign rx_data_17 = 32'd0;
  assign tx_17_p = 1'd0;
  assign tx_17_n = 1'd0;
  assign tx_out_clk_17 = 1'd0;
  assign up_es_rdata_17 = 16'd0;
  assign up_es_ready_17 = 1'd0;
  assign up_rx_pll_locked_17 = 1'd0;
  assign up_rx_rst_done_17 = 1'd0;
  assign up_rx_rdata_17 = 16'd0;
  assign up_rx_ready_17 = 1'd0;
  assign up_tx_pll_locked_17 = 1'd0;
  assign up_tx_rst_done_17 = 1'd0;
  assign up_tx_rdata_17 = 16'd0;
  assign up_tx_ready_17 = 1'd0;
  end
  endgenerate

  generate
  if (NUM_OF_LANES >= 19) begin
  util_adxcvr_xch #(
    .XCVR_TYPE (XCVR_TYPE),
    .LINK_MODE (LINK_MODE),
    .DATA_PATH_WIDTH (DATA_PATH_WIDTH),
    .CPLL_FBDIV (CPLL_FBDIV),
    .CPLL_FBDIV_4_5 (CPLL_FBDIV_4_5),
    .CPLL_CFG0 (CPLL_CFG0),
    .CPLL_CFG1 (CPLL_CFG1),
    .CPLL_CFG2 (CPLL_CFG2),
    .CPLL_CFG3 (CPLL_CFG3),
    .TX_OUT_DIV (TX_OUT_DIV),
    .TX_CLK25_DIV (TX_CLK25_DIV),
    .TX_POLARITY ((TX_LANE_INVERT >> 18) & 1),
    .TX_PI_BIASSET (TX_PI_BIASSET),
    .TXPI_CFG (TXPI_CFG),
    .A_TXDIFFCTRL (A_TXDIFFCTRL),
    .RX_OUT_DIV (RX_OUT_DIV),
    .RX_CLK25_DIV (RX_CLK25_DIV),
    .RX_DFE_LPM_CFG (RX_DFE_LPM_CFG),
    .RX_PMA_CFG (RX_PMA_CFG),
    .RX_CDR_CFG (RX_CDR_CFG),
    .RX_POLARITY ((RX_LANE_INVERT >> 18) & 1),
    .RXCDR_CFG0 (RXCDR_CFG0),
    .RXCDR_CFG2 (RXCDR_CFG2),
    .RXCDR_CFG2_GEN2 (RXCDR_CFG2_GEN2),
    .RXCDR_CFG2_GEN4 (RXCDR_CFG2_GEN4),
    .RXCDR_CFG3 (RXCDR_CFG3),
    .RXCDR_CFG3_GEN2 (RXCDR_CFG3_GEN2),
    .RXCDR_CFG3_GEN3 (RXCDR_CFG3_GEN3),
    .RXCDR_CFG3_GEN4 (RXCDR_CFG3_GEN4),
    .RXDFE_KH_CFG2 (RXDFE_KH_CFG2),
    .RXDFE_KH_CFG3 (RXDFE_KH_CFG3),
    .RX_WIDEMODE_CDR (RX_WIDEMODE_CDR),
    .RX_XMODE_SEL (RX_XMODE_SEL),
    .TXDRV_FREQBAND (TXDRV_FREQBAND),
    .TXFE_CFG0 (TXFE_CFG0),
    .TXFE_CFG1 (TXFE_CFG1),
    .TXFE_CFG2 (TXFE_CFG2),
    .TXFE_CFG3 (TXFE_CFG3),
    .TXPI_CFG0 (TXPI_CFG0),
    .TXPI_CFG1 (TXPI_CFG1),
    .TXSWBST_EN (TXSWBST_EN),
    .CH_HSPMUX (CH_HSPMUX),
    .PREIQ_FREQ_BST (PREIQ_FREQ_BST),
    .RXPI_CFG0 (RXPI_CFG0),
    .RXPI_CFG1 (RXPI_CFG1),
    .RTX_BUF_CML_CTRL (RTX_BUF_CML_CTRL)
  ) i_xch_18 (
    .qpll2ch_clk (qpll2ch_clk_16),
    .qpll2ch_ref_clk (qpll2ch_ref_clk_16),
    .qpll2ch_locked (qpll2ch_locked_16),
    .qpll1_clk (qpll1_clk_16),
    .qpll1_ref_clk (qpll1_ref_clk_16),
    .qpll1_locked (qpll1_locked_16),
    .cpll_ref_clk (cpll_ref_clk_18),
    .up_cpll_rst (up_cpll_rst_18),
    .rx_p (rx_18_p),
    .rx_n (rx_18_n),
    .rx_out_clk (rx_out_clk_18),
    .rx_out_clk_div2 (rx_out_clk_div2_18),
    .rx_clk (rx_clk_18),
    .rx_clk_2x (rx_clk_2x_18),
    .rx_charisk (rx_charisk_18),
    .rx_disperr (rx_disperr_18),
    .rx_notintable (rx_notintable_18),
    .rx_data (rx_data_18),
    .rx_calign (rx_calign_18),
    .rx_header(rx_header_18),
    .rx_block_sync(rx_block_sync_18),
    .tx_p (tx_18_p),
    .tx_n (tx_18_n),
    .tx_out_clk (tx_out_clk_18),
    .tx_out_clk_div2 (tx_out_clk_div2_18),
    .tx_clk (tx_clk_18),
    .tx_clk_2x (tx_clk_2x_18),
    .tx_charisk (tx_charisk_18),
    .tx_data (tx_data_18),
    .tx_header (tx_header_18),
    .up_rstn (up_rstn),
    .up_clk (up_clk),
    .up_es_enb (up_es_enb_18),
    .up_es_addr (up_es_addr_18),
    .up_es_wr (up_es_wr_18),
    .up_es_wdata (up_es_wdata_18),
    .up_es_rdata (up_es_rdata_18),
    .up_es_ready (up_es_ready_18),
    .up_es_reset (up_es_reset_18),
    .up_rx_pll_locked (up_rx_pll_locked_18),
    .up_rx_rst (up_rx_rst_18),
    .up_rx_user_ready (up_rx_user_ready_18),
    .up_rx_rst_done (up_rx_rst_done_18),
    .up_rx_prbssel (up_rx_prbssel_18),
    .up_rx_prbscntreset (up_rx_prbscntreset_18),
    .up_rx_prbserr (up_rx_prbserr_18),
    .up_rx_prbslocked (up_rx_prbslocked_18),
    .up_rx_bufstatus (up_rx_bufstatus_18),
    .up_rx_bufstatus_rst (up_rx_bufstatus_rst_18),
    .up_rx_lpm_dfe_n (up_rx_lpm_dfe_n_18),
    .up_rx_rate (up_rx_rate_18),
    .up_rx_sys_clk_sel (up_rx_sys_clk_sel_18),
    .up_rx_out_clk_sel (up_rx_out_clk_sel_18),
    .up_rx_enb (up_rx_enb_18),
    .up_rx_addr (up_rx_addr_18),
    .up_rx_wr (up_rx_wr_18),
    .up_rx_wdata (up_rx_wdata_18),
    .up_rx_rdata (up_rx_rdata_18),
    .up_rx_ready (up_rx_ready_18),
    .up_tx_pll_locked (up_tx_pll_locked_18),
    .up_tx_rst (up_tx_rst_18),
    .up_tx_user_ready (up_tx_user_ready_18),
    .up_tx_rst_done (up_tx_rst_done_18),
    .up_tx_bufstatus (up_tx_bufstatus_18),
    .up_tx_prbsforceerr (up_tx_prbsforceerr_18),
    .up_tx_prbssel (up_tx_prbssel_18),
    .up_tx_lpm_dfe_n (up_tx_lpm_dfe_n_18),
    .up_tx_rate (up_tx_rate_18),
    .up_tx_sys_clk_sel (up_tx_sys_clk_sel_18),
    .up_tx_out_clk_sel (up_tx_out_clk_sel_18),
    .up_tx_diffctrl (up_tx_diffctrl_18),
    .up_tx_postcursor (up_tx_postcursor_18),
    .up_tx_precursor (up_tx_precursor_18),
    .up_tx_enb (up_tx_enb_18),
    .up_tx_addr (up_tx_addr_18),
    .up_tx_wr (up_tx_wr_18),
    .up_tx_wdata (up_tx_wdata_18),
    .up_tx_rdata (up_tx_rdata_18),
    .up_tx_ready (up_tx_ready_18));
  end else begin
  assign rx_out_clk_18 = 1'd0;
  assign rx_charisk_18 = 4'd0;
  assign rx_disperr_18 = 4'd0;
  assign rx_notintable_18 = 4'd0;
  assign rx_data_18 = 32'd0;
  assign tx_18_p = 1'd0;
  assign tx_18_n = 1'd0;
  assign tx_out_clk_18 = 1'd0;
  assign up_es_rdata_18 = 16'd0;
  assign up_es_ready_18 = 1'd0;
  assign up_rx_pll_locked_18 = 1'd0;
  assign up_rx_rst_done_18 = 1'd0;
  assign up_rx_rdata_18 = 16'd0;
  assign up_rx_ready_18 = 1'd0;
  assign up_tx_pll_locked_18 = 1'd0;
  assign up_tx_rst_done_18 = 1'd0;
  assign up_tx_rdata_18 = 16'd0;
  assign up_tx_ready_18 = 1'd0;
  end
  endgenerate

  generate
  if (NUM_OF_LANES >= 20) begin
  util_adxcvr_xch #(
    .XCVR_TYPE (XCVR_TYPE),
    .LINK_MODE (LINK_MODE),
    .DATA_PATH_WIDTH (DATA_PATH_WIDTH),
    .CPLL_FBDIV (CPLL_FBDIV),
    .CPLL_FBDIV_4_5 (CPLL_FBDIV_4_5),
    .CPLL_CFG0 (CPLL_CFG0),
    .CPLL_CFG1 (CPLL_CFG1),
    .CPLL_CFG2 (CPLL_CFG2),
    .CPLL_CFG3 (CPLL_CFG3),
    .TX_OUT_DIV (TX_OUT_DIV),
    .TX_CLK25_DIV (TX_CLK25_DIV),
    .TX_POLARITY ((TX_LANE_INVERT >> 19) & 1),
    .TX_PI_BIASSET (TX_PI_BIASSET),
    .TXPI_CFG (TXPI_CFG),
    .A_TXDIFFCTRL (A_TXDIFFCTRL),
    .RX_OUT_DIV (RX_OUT_DIV),
    .RX_CLK25_DIV (RX_CLK25_DIV),
    .RX_DFE_LPM_CFG (RX_DFE_LPM_CFG),
    .RX_PMA_CFG (RX_PMA_CFG),
    .RX_CDR_CFG (RX_CDR_CFG),
    .RX_POLARITY ((RX_LANE_INVERT >> 19) & 1),
    .RXCDR_CFG0 (RXCDR_CFG0),
    .RXCDR_CFG2 (RXCDR_CFG2),
    .RXCDR_CFG2_GEN2 (RXCDR_CFG2_GEN2),
    .RXCDR_CFG2_GEN4 (RXCDR_CFG2_GEN4),
    .RXCDR_CFG3 (RXCDR_CFG3),
    .RXCDR_CFG3_GEN2 (RXCDR_CFG3_GEN2),
    .RXCDR_CFG3_GEN3 (RXCDR_CFG3_GEN3),
    .RXCDR_CFG3_GEN4 (RXCDR_CFG3_GEN4),
    .RXDFE_KH_CFG2 (RXDFE_KH_CFG2),
    .RXDFE_KH_CFG3 (RXDFE_KH_CFG3),
    .RX_WIDEMODE_CDR (RX_WIDEMODE_CDR),
    .RX_XMODE_SEL (RX_XMODE_SEL),
    .TXDRV_FREQBAND (TXDRV_FREQBAND),
    .TXFE_CFG0 (TXFE_CFG0),
    .TXFE_CFG1 (TXFE_CFG1),
    .TXFE_CFG2 (TXFE_CFG2),
    .TXFE_CFG3 (TXFE_CFG3),
    .TXPI_CFG0 (TXPI_CFG0),
    .TXPI_CFG1 (TXPI_CFG1),
    .TXSWBST_EN (TXSWBST_EN),
    .CH_HSPMUX (CH_HSPMUX),
    .PREIQ_FREQ_BST (PREIQ_FREQ_BST),
    .RXPI_CFG0 (RXPI_CFG0),
    .RXPI_CFG1 (RXPI_CFG1),
    .RTX_BUF_CML_CTRL (RTX_BUF_CML_CTRL)
  ) i_xch_19 (
    .qpll2ch_clk (qpll2ch_clk_16),
    .qpll2ch_ref_clk (qpll2ch_ref_clk_16),
    .qpll2ch_locked (qpll2ch_locked_16),
    .qpll1_clk (qpll1_clk_16),
    .qpll1_ref_clk (qpll1_ref_clk_16),
    .qpll1_locked (qpll1_locked_16),
    .cpll_ref_clk (cpll_ref_clk_19),
    .up_cpll_rst (up_cpll_rst_19),
    .rx_p (rx_19_p),
    .rx_n (rx_19_n),
    .rx_out_clk (rx_out_clk_19),
    .rx_out_clk_div2 (rx_out_clk_div2_19),
    .rx_clk (rx_clk_19),
    .rx_clk_2x (rx_clk_2x_19),
    .rx_charisk (rx_charisk_19),
    .rx_disperr (rx_disperr_19),
    .rx_notintable (rx_notintable_19),
    .rx_data (rx_data_19),
    .rx_calign (rx_calign_19),
    .rx_header(rx_header_19),
    .rx_block_sync(rx_block_sync_19),
    .tx_p (tx_19_p),
    .tx_n (tx_19_n),
    .tx_out_clk (tx_out_clk_19),
    .tx_out_clk_div2 (tx_out_clk_div2_19),
    .tx_clk (tx_clk_19),
    .tx_clk_2x (tx_clk_2x_19),
    .tx_charisk (tx_charisk_19),
    .tx_data (tx_data_19),
    .tx_header (tx_header_19),
    .up_rstn (up_rstn),
    .up_clk (up_clk),
    .up_es_enb (up_es_enb_19),
    .up_es_addr (up_es_addr_19),
    .up_es_wr (up_es_wr_19),
    .up_es_wdata (up_es_wdata_19),
    .up_es_rdata (up_es_rdata_19),
    .up_es_ready (up_es_ready_19),
    .up_es_reset (up_es_reset_19),
    .up_rx_pll_locked (up_rx_pll_locked_19),
    .up_rx_rst (up_rx_rst_19),
    .up_rx_user_ready (up_rx_user_ready_19),
    .up_rx_rst_done (up_rx_rst_done_19),
    .up_rx_prbssel (up_rx_prbssel_19),
    .up_rx_prbscntreset (up_rx_prbscntreset_19),
    .up_rx_prbserr (up_rx_prbserr_19),
    .up_rx_prbslocked (up_rx_prbslocked_19),
    .up_rx_bufstatus (up_rx_bufstatus_19),
    .up_rx_bufstatus_rst (up_rx_bufstatus_rst_19),
    .up_rx_lpm_dfe_n (up_rx_lpm_dfe_n_19),
    .up_rx_rate (up_rx_rate_19),
    .up_rx_sys_clk_sel (up_rx_sys_clk_sel_19),
    .up_rx_out_clk_sel (up_rx_out_clk_sel_19),
    .up_rx_enb (up_rx_enb_19),
    .up_rx_addr (up_rx_addr_19),
    .up_rx_wr (up_rx_wr_19),
    .up_rx_wdata (up_rx_wdata_19),
    .up_rx_rdata (up_rx_rdata_19),
    .up_rx_ready (up_rx_ready_19),
    .up_tx_pll_locked (up_tx_pll_locked_19),
    .up_tx_rst (up_tx_rst_19),
    .up_tx_user_ready (up_tx_user_ready_19),
    .up_tx_rst_done (up_tx_rst_done_19),
    .up_tx_bufstatus (up_tx_bufstatus_19),
    .up_tx_prbsforceerr (up_tx_prbsforceerr_19),
    .up_tx_prbssel (up_tx_prbssel_19),
    .up_tx_lpm_dfe_n (up_tx_lpm_dfe_n_19),
    .up_tx_rate (up_tx_rate_19),
    .up_tx_sys_clk_sel (up_tx_sys_clk_sel_19),
    .up_tx_out_clk_sel (up_tx_out_clk_sel_19),
    .up_tx_diffctrl (up_tx_diffctrl_19),
    .up_tx_postcursor (up_tx_postcursor_19),
    .up_tx_precursor (up_tx_precursor_19),
    .up_tx_enb (up_tx_enb_19),
    .up_tx_addr (up_tx_addr_19),
    .up_tx_wr (up_tx_wr_19),
    .up_tx_wdata (up_tx_wdata_19),
    .up_tx_rdata (up_tx_rdata_19),
    .up_tx_ready (up_tx_ready_19));
  end else begin
  assign rx_out_clk_19 = 1'd0;
  assign rx_charisk_19 = 4'd0;
  assign rx_disperr_19 = 4'd0;
  assign rx_notintable_19 = 4'd0;
  assign rx_data_19 = 32'd0;
  assign tx_19_p = 1'd0;
  assign tx_19_n = 1'd0;
  assign tx_out_clk_19 = 1'd0;
  assign up_es_rdata_19 = 16'd0;
  assign up_es_ready_19 = 1'd0;
  assign up_rx_pll_locked_19 = 1'd0;
  assign up_rx_rst_done_19 = 1'd0;
  assign up_rx_rdata_19 = 16'd0;
  assign up_rx_ready_19 = 1'd0;
  assign up_tx_pll_locked_19 = 1'd0;
  assign up_tx_rst_done_19 = 1'd0;
  assign up_tx_rdata_19 = 16'd0;
  assign up_tx_ready_19 = 1'd0;
  end
  endgenerate

  generate
  if (NUM_OF_LANES >= 21) begin
  util_adxcvr_xcm #(
    .XCVR_TYPE (XCVR_TYPE),
    .QPLL_REFCLK_DIV (QPLL_REFCLK_DIV),
    .QPLL_FBDIV_RATIO (QPLL_FBDIV_RATIO),
    .POR_CFG (POR_CFG),
    .PPF0_CFG (PPF0_CFG),
    .PPF1_CFG (PPF1_CFG),
    .QPLL_CFG (QPLL_CFG),
    .QPLL_FBDIV (QPLL_FBDIV),
    .QPLL_CFG0 (QPLL_CFG0),
    .QPLL_CFG1 (QPLL_CFG1),
    .QPLL_CFG1_G3 (QPLL_CFG1_G3),
    .QPLL_CFG2 (QPLL_CFG2),
    .QPLL_CFG2_G3 (QPLL_CFG2_G3),
    .QPLL_CFG3 (QPLL_CFG3),
    .QPLL_CP_G3 (QPLL_CP_G3),
    .QPLL_LPF (QPLL_LPF),
    .QPLL_CP (QPLL_CP),
    .QPLL_CFG4 (QPLL_CFG4)
  ) i_xcm_20 (
    .qpll_ref_clk (qpll_ref_clk_20),
    .qpll_sel (qpll_sel_20),
    .qpll2ch_clk (qpll2ch_clk_20),
    .qpll2ch_ref_clk (qpll2ch_ref_clk_20),
    .qpll2ch_locked (qpll2ch_locked_20),
    .qpll1_clk (qpll1_clk_20),
    .qpll1_ref_clk (qpll1_ref_clk_20),
    .qpll1_locked (qpll1_locked_20),
    .up_rstn (up_rstn),
    .up_clk (up_clk),
    .up_qpll_rst (up_qpll_rst_20),
    .up_cm_enb (up_cm_enb_20),
    .up_cm_addr (up_cm_addr_20),
    .up_cm_wr (up_cm_wr_20),
    .up_cm_wdata (up_cm_wdata_20),
    .up_cm_rdata (up_cm_rdata_20),
    .up_cm_ready (up_cm_ready_20));
  end else begin
  assign qpll2ch_clk_20 = 1'd0;
  assign qpll2ch_ref_clk_20 = 1'd0;
  assign qpll2ch_locked_20 = 1'd0;
  assign qpll1_clk_20 = 1'd0;
  assign qpll1_ref_clk_20 = 1'd0;
  assign qpll1_locked_20 = 1'd0;
  assign up_cm_rdata_20 = 16'd0;
  assign up_cm_ready_20 = 1'd0;
  end
  endgenerate

  generate
  if (NUM_OF_LANES >= 21) begin
  util_adxcvr_xch #(
    .XCVR_TYPE (XCVR_TYPE),
    .LINK_MODE (LINK_MODE),
    .DATA_PATH_WIDTH (DATA_PATH_WIDTH),
    .CPLL_FBDIV (CPLL_FBDIV),
    .CPLL_FBDIV_4_5 (CPLL_FBDIV_4_5),
    .CPLL_CFG0 (CPLL_CFG0),
    .CPLL_CFG1 (CPLL_CFG1),
    .CPLL_CFG2 (CPLL_CFG2),
    .CPLL_CFG3 (CPLL_CFG3),
    .TX_OUT_DIV (TX_OUT_DIV),
    .TX_CLK25_DIV (TX_CLK25_DIV),
    .TX_POLARITY ((TX_LANE_INVERT >> 20) & 1),
    .TX_PI_BIASSET (TX_PI_BIASSET),
    .TXPI_CFG (TXPI_CFG),
    .A_TXDIFFCTRL (A_TXDIFFCTRL),
    .RX_OUT_DIV (RX_OUT_DIV),
    .RX_CLK25_DIV (RX_CLK25_DIV),
    .RX_DFE_LPM_CFG (RX_DFE_LPM_CFG),
    .RX_PMA_CFG (RX_PMA_CFG),
    .RX_CDR_CFG (RX_CDR_CFG),
    .RX_POLARITY ((RX_LANE_INVERT >> 20) & 1),
    .RXCDR_CFG0 (RXCDR_CFG0),
    .RXCDR_CFG2 (RXCDR_CFG2),
    .RXCDR_CFG2_GEN2 (RXCDR_CFG2_GEN2),
    .RXCDR_CFG2_GEN4 (RXCDR_CFG2_GEN4),
    .RXCDR_CFG3 (RXCDR_CFG3),
    .RXCDR_CFG3_GEN2 (RXCDR_CFG3_GEN2),
    .RXCDR_CFG3_GEN3 (RXCDR_CFG3_GEN3),
    .RXCDR_CFG3_GEN4 (RXCDR_CFG3_GEN4),
    .RXDFE_KH_CFG2 (RXDFE_KH_CFG2),
    .RXDFE_KH_CFG3 (RXDFE_KH_CFG3),
    .RX_WIDEMODE_CDR (RX_WIDEMODE_CDR),
    .RX_XMODE_SEL (RX_XMODE_SEL),
    .TXDRV_FREQBAND (TXDRV_FREQBAND),
    .TXFE_CFG0 (TXFE_CFG0),
    .TXFE_CFG1 (TXFE_CFG1),
    .TXFE_CFG2 (TXFE_CFG2),
    .TXFE_CFG3 (TXFE_CFG3),
    .TXPI_CFG0 (TXPI_CFG0),
    .TXPI_CFG1 (TXPI_CFG1),
    .TXSWBST_EN (TXSWBST_EN),
    .CH_HSPMUX (CH_HSPMUX),
    .PREIQ_FREQ_BST (PREIQ_FREQ_BST),
    .RXPI_CFG0 (RXPI_CFG0),
    .RXPI_CFG1 (RXPI_CFG1),
    .RTX_BUF_CML_CTRL (RTX_BUF_CML_CTRL)
  ) i_xch_20 (
    .qpll2ch_clk (qpll2ch_clk_20),
    .qpll2ch_ref_clk (qpll2ch_ref_clk_20),
    .qpll2ch_locked (qpll2ch_locked_20),
    .qpll1_clk (qpll1_clk_20),
    .qpll1_ref_clk (qpll1_ref_clk_20),
    .qpll1_locked (qpll1_locked_20),
    .cpll_ref_clk (cpll_ref_clk_20),
    .up_cpll_rst (up_cpll_rst_20),
    .rx_p (rx_20_p),
    .rx_n (rx_20_n),
    .rx_out_clk (rx_out_clk_20),
    .rx_out_clk_div2 (rx_out_clk_div2_20),
    .rx_clk (rx_clk_20),
    .rx_clk_2x (rx_clk_2x_20),
    .rx_charisk (rx_charisk_20),
    .rx_disperr (rx_disperr_20),
    .rx_notintable (rx_notintable_20),
    .rx_data (rx_data_20),
    .rx_calign (rx_calign_20),
    .rx_header(rx_header_20),
    .rx_block_sync(rx_block_sync_20),
    .tx_p (tx_20_p),
    .tx_n (tx_20_n),
    .tx_out_clk (tx_out_clk_20),
    .tx_out_clk_div2 (tx_out_clk_div2_20),
    .tx_clk (tx_clk_20),
    .tx_clk_2x (tx_clk_2x_20),
    .tx_charisk (tx_charisk_20),
    .tx_data (tx_data_20),
    .tx_header (tx_header_20),
    .up_rstn (up_rstn),
    .up_clk (up_clk),
    .up_es_enb (up_es_enb_20),
    .up_es_addr (up_es_addr_20),
    .up_es_wr (up_es_wr_20),
    .up_es_wdata (up_es_wdata_20),
    .up_es_rdata (up_es_rdata_20),
    .up_es_ready (up_es_ready_20),
    .up_es_reset (up_es_reset_20),
    .up_rx_pll_locked (up_rx_pll_locked_20),
    .up_rx_rst (up_rx_rst_20),
    .up_rx_user_ready (up_rx_user_ready_20),
    .up_rx_rst_done (up_rx_rst_done_20),
    .up_rx_prbssel (up_rx_prbssel_20),
    .up_rx_prbscntreset (up_rx_prbscntreset_20),
    .up_rx_prbserr (up_rx_prbserr_20),
    .up_rx_prbslocked (up_rx_prbslocked_20),
    .up_rx_bufstatus (up_rx_bufstatus_20),
    .up_rx_bufstatus_rst (up_rx_bufstatus_rst_20),
    .up_rx_lpm_dfe_n (up_rx_lpm_dfe_n_20),
    .up_rx_rate (up_rx_rate_20),
    .up_rx_sys_clk_sel (up_rx_sys_clk_sel_20),
    .up_rx_out_clk_sel (up_rx_out_clk_sel_20),
    .up_rx_enb (up_rx_enb_20),
    .up_rx_addr (up_rx_addr_20),
    .up_rx_wr (up_rx_wr_20),
    .up_rx_wdata (up_rx_wdata_20),
    .up_rx_rdata (up_rx_rdata_20),
    .up_rx_ready (up_rx_ready_20),
    .up_tx_pll_locked (up_tx_pll_locked_20),
    .up_tx_rst (up_tx_rst_20),
    .up_tx_user_ready (up_tx_user_ready_20),
    .up_tx_rst_done (up_tx_rst_done_20),
    .up_tx_bufstatus (up_tx_bufstatus_20),
    .up_tx_prbsforceerr (up_tx_prbsforceerr_20),
    .up_tx_prbssel (up_tx_prbssel_20),
    .up_tx_lpm_dfe_n (up_tx_lpm_dfe_n_20),
    .up_tx_rate (up_tx_rate_20),
    .up_tx_sys_clk_sel (up_tx_sys_clk_sel_20),
    .up_tx_out_clk_sel (up_tx_out_clk_sel_20),
    .up_tx_diffctrl (up_tx_diffctrl_20),
    .up_tx_postcursor (up_tx_postcursor_20),
    .up_tx_precursor (up_tx_precursor_20),
    .up_tx_enb (up_tx_enb_20),
    .up_tx_addr (up_tx_addr_20),
    .up_tx_wr (up_tx_wr_20),
    .up_tx_wdata (up_tx_wdata_20),
    .up_tx_rdata (up_tx_rdata_20),
    .up_tx_ready (up_tx_ready_20));
  end else begin
  assign rx_out_clk_20 = 1'd0;
  assign rx_charisk_20 = 4'd0;
  assign rx_disperr_20 = 4'd0;
  assign rx_notintable_20 = 4'd0;
  assign rx_data_20 = 32'd0;
  assign tx_20_p = 1'd0;
  assign tx_20_n = 1'd0;
  assign tx_out_clk_20 = 1'd0;
  assign up_es_rdata_20 = 16'd0;
  assign up_es_ready_20 = 1'd0;
  assign up_rx_pll_locked_20 = 1'd0;
  assign up_rx_rst_done_20 = 1'd0;
  assign up_rx_rdata_20 = 16'd0;
  assign up_rx_ready_20 = 1'd0;
  assign up_tx_pll_locked_20 = 1'd0;
  assign up_tx_rst_done_20 = 1'd0;
  assign up_tx_rdata_20 = 16'd0;
  assign up_tx_ready_20 = 1'd0;
  end
  endgenerate

  generate
  if (NUM_OF_LANES >= 22) begin
  util_adxcvr_xch #(
    .XCVR_TYPE (XCVR_TYPE),
    .LINK_MODE (LINK_MODE),
    .DATA_PATH_WIDTH (DATA_PATH_WIDTH),
    .CPLL_FBDIV (CPLL_FBDIV),
    .CPLL_FBDIV_4_5 (CPLL_FBDIV_4_5),
    .CPLL_CFG0 (CPLL_CFG0),
    .CPLL_CFG1 (CPLL_CFG1),
    .CPLL_CFG2 (CPLL_CFG2),
    .CPLL_CFG3 (CPLL_CFG3),
    .TX_OUT_DIV (TX_OUT_DIV),
    .TX_CLK25_DIV (TX_CLK25_DIV),
    .TX_POLARITY ((TX_LANE_INVERT >> 21) & 1),
    .TX_PI_BIASSET (TX_PI_BIASSET),
    .TXPI_CFG (TXPI_CFG),
    .A_TXDIFFCTRL (A_TXDIFFCTRL),
    .RX_OUT_DIV (RX_OUT_DIV),
    .RX_CLK25_DIV (RX_CLK25_DIV),
    .RX_DFE_LPM_CFG (RX_DFE_LPM_CFG),
    .RX_PMA_CFG (RX_PMA_CFG),
    .RX_CDR_CFG (RX_CDR_CFG),
    .RX_POLARITY ((RX_LANE_INVERT >> 21) & 1),
    .RXCDR_CFG0 (RXCDR_CFG0),
    .RXCDR_CFG2 (RXCDR_CFG2),
    .RXCDR_CFG2_GEN2 (RXCDR_CFG2_GEN2),
    .RXCDR_CFG2_GEN4 (RXCDR_CFG2_GEN4),
    .RXCDR_CFG3 (RXCDR_CFG3),
    .RXCDR_CFG3_GEN2 (RXCDR_CFG3_GEN2),
    .RXCDR_CFG3_GEN3 (RXCDR_CFG3_GEN3),
    .RXCDR_CFG3_GEN4 (RXCDR_CFG3_GEN4),
    .RXDFE_KH_CFG2 (RXDFE_KH_CFG2),
    .RXDFE_KH_CFG3 (RXDFE_KH_CFG3),
    .RX_WIDEMODE_CDR (RX_WIDEMODE_CDR),
    .RX_XMODE_SEL (RX_XMODE_SEL),
    .TXDRV_FREQBAND (TXDRV_FREQBAND),
    .TXFE_CFG0 (TXFE_CFG0),
    .TXFE_CFG1 (TXFE_CFG1),
    .TXFE_CFG2 (TXFE_CFG2),
    .TXFE_CFG3 (TXFE_CFG3),
    .TXPI_CFG0 (TXPI_CFG0),
    .TXPI_CFG1 (TXPI_CFG1),
    .TXSWBST_EN (TXSWBST_EN),
    .CH_HSPMUX (CH_HSPMUX),
    .PREIQ_FREQ_BST (PREIQ_FREQ_BST),
    .RXPI_CFG0 (RXPI_CFG0),
    .RXPI_CFG1 (RXPI_CFG1),
    .RTX_BUF_CML_CTRL (RTX_BUF_CML_CTRL)
  ) i_xch_21 (
    .qpll2ch_clk (qpll2ch_clk_20),
    .qpll2ch_ref_clk (qpll2ch_ref_clk_20),
    .qpll2ch_locked (qpll2ch_locked_20),
    .qpll1_clk (qpll1_clk_20),
    .qpll1_ref_clk (qpll1_ref_clk_20),
    .qpll1_locked (qpll1_locked_20),
    .cpll_ref_clk (cpll_ref_clk_21),
    .up_cpll_rst (up_cpll_rst_21),
    .rx_p (rx_21_p),
    .rx_n (rx_21_n),
    .rx_out_clk (rx_out_clk_21),
    .rx_out_clk_div2 (rx_out_clk_div2_21),
    .rx_clk (rx_clk_21),
    .rx_clk_2x (rx_clk_2x_21),
    .rx_charisk (rx_charisk_21),
    .rx_disperr (rx_disperr_21),
    .rx_notintable (rx_notintable_21),
    .rx_data (rx_data_21),
    .rx_calign (rx_calign_21),
    .rx_header(rx_header_21),
    .rx_block_sync(rx_block_sync_21),
    .tx_p (tx_21_p),
    .tx_n (tx_21_n),
    .tx_out_clk (tx_out_clk_21),
    .tx_out_clk_div2 (tx_out_clk_div2_21),
    .tx_clk (tx_clk_21),
    .tx_clk_2x (tx_clk_2x_21),
    .tx_charisk (tx_charisk_21),
    .tx_data (tx_data_21),
    .tx_header (tx_header_21),
    .up_rstn (up_rstn),
    .up_clk (up_clk),
    .up_es_enb (up_es_enb_21),
    .up_es_addr (up_es_addr_21),
    .up_es_wr (up_es_wr_21),
    .up_es_wdata (up_es_wdata_21),
    .up_es_rdata (up_es_rdata_21),
    .up_es_ready (up_es_ready_21),
    .up_es_reset (up_es_reset_21),
    .up_rx_pll_locked (up_rx_pll_locked_21),
    .up_rx_rst (up_rx_rst_21),
    .up_rx_user_ready (up_rx_user_ready_21),
    .up_rx_rst_done (up_rx_rst_done_21),
    .up_rx_prbssel (up_rx_prbssel_21),
    .up_rx_prbscntreset (up_rx_prbscntreset_21),
    .up_rx_prbserr (up_rx_prbserr_21),
    .up_rx_prbslocked (up_rx_prbslocked_21),
    .up_rx_bufstatus (up_rx_bufstatus_21),
    .up_rx_bufstatus_rst (up_rx_bufstatus_rst_21),
    .up_rx_lpm_dfe_n (up_rx_lpm_dfe_n_21),
    .up_rx_rate (up_rx_rate_21),
    .up_rx_sys_clk_sel (up_rx_sys_clk_sel_21),
    .up_rx_out_clk_sel (up_rx_out_clk_sel_21),
    .up_rx_enb (up_rx_enb_21),
    .up_rx_addr (up_rx_addr_21),
    .up_rx_wr (up_rx_wr_21),
    .up_rx_wdata (up_rx_wdata_21),
    .up_rx_rdata (up_rx_rdata_21),
    .up_rx_ready (up_rx_ready_21),
    .up_tx_pll_locked (up_tx_pll_locked_21),
    .up_tx_rst (up_tx_rst_21),
    .up_tx_user_ready (up_tx_user_ready_21),
    .up_tx_rst_done (up_tx_rst_done_21),
    .up_tx_bufstatus (up_tx_bufstatus_21),
    .up_tx_prbsforceerr (up_tx_prbsforceerr_21),
    .up_tx_prbssel (up_tx_prbssel_21),
    .up_tx_lpm_dfe_n (up_tx_lpm_dfe_n_21),
    .up_tx_rate (up_tx_rate_21),
    .up_tx_sys_clk_sel (up_tx_sys_clk_sel_21),
    .up_tx_out_clk_sel (up_tx_out_clk_sel_21),
    .up_tx_diffctrl (up_tx_diffctrl_21),
    .up_tx_postcursor (up_tx_postcursor_21),
    .up_tx_precursor (up_tx_precursor_21),
    .up_tx_enb (up_tx_enb_21),
    .up_tx_addr (up_tx_addr_21),
    .up_tx_wr (up_tx_wr_21),
    .up_tx_wdata (up_tx_wdata_21),
    .up_tx_rdata (up_tx_rdata_21),
    .up_tx_ready (up_tx_ready_21));
  end else begin
  assign rx_out_clk_21 = 1'd0;
  assign rx_charisk_21 = 4'd0;
  assign rx_disperr_21 = 4'd0;
  assign rx_notintable_21 = 4'd0;
  assign rx_data_21 = 32'd0;
  assign tx_21_p = 1'd0;
  assign tx_21_n = 1'd0;
  assign tx_out_clk_21 = 1'd0;
  assign up_es_rdata_21 = 16'd0;
  assign up_es_ready_21 = 1'd0;
  assign up_rx_pll_locked_21 = 1'd0;
  assign up_rx_rst_done_21 = 1'd0;
  assign up_rx_rdata_21 = 16'd0;
  assign up_rx_ready_21 = 1'd0;
  assign up_tx_pll_locked_21 = 1'd0;
  assign up_tx_rst_done_21 = 1'd0;
  assign up_tx_rdata_21 = 16'd0;
  assign up_tx_ready_21 = 1'd0;
  end
  endgenerate

  generate
  if (NUM_OF_LANES >= 23) begin
  util_adxcvr_xch #(
    .XCVR_TYPE (XCVR_TYPE),
    .LINK_MODE (LINK_MODE),
    .DATA_PATH_WIDTH (DATA_PATH_WIDTH),
    .CPLL_FBDIV (CPLL_FBDIV),
    .CPLL_FBDIV_4_5 (CPLL_FBDIV_4_5),
    .CPLL_CFG0 (CPLL_CFG0),
    .CPLL_CFG1 (CPLL_CFG1),
    .CPLL_CFG2 (CPLL_CFG2),
    .CPLL_CFG3 (CPLL_CFG3),
    .TX_OUT_DIV (TX_OUT_DIV),
    .TX_CLK25_DIV (TX_CLK25_DIV),
    .TX_POLARITY ((TX_LANE_INVERT >> 22) & 1),
    .TX_PI_BIASSET (TX_PI_BIASSET),
    .TXPI_CFG (TXPI_CFG),
    .A_TXDIFFCTRL (A_TXDIFFCTRL),
    .RX_OUT_DIV (RX_OUT_DIV),
    .RX_CLK25_DIV (RX_CLK25_DIV),
    .RX_DFE_LPM_CFG (RX_DFE_LPM_CFG),
    .RX_PMA_CFG (RX_PMA_CFG),
    .RX_CDR_CFG (RX_CDR_CFG),
    .RX_POLARITY ((RX_LANE_INVERT >> 22) & 1),
    .RXCDR_CFG0 (RXCDR_CFG0),
    .RXCDR_CFG2 (RXCDR_CFG2),
    .RXCDR_CFG2_GEN2 (RXCDR_CFG2_GEN2),
    .RXCDR_CFG2_GEN4 (RXCDR_CFG2_GEN4),
    .RXCDR_CFG3 (RXCDR_CFG3),
    .RXCDR_CFG3_GEN2 (RXCDR_CFG3_GEN2),
    .RXCDR_CFG3_GEN3 (RXCDR_CFG3_GEN3),
    .RXCDR_CFG3_GEN4 (RXCDR_CFG3_GEN4),
    .RXDFE_KH_CFG2 (RXDFE_KH_CFG2),
    .RXDFE_KH_CFG3 (RXDFE_KH_CFG3),
    .RX_WIDEMODE_CDR (RX_WIDEMODE_CDR),
    .RX_XMODE_SEL (RX_XMODE_SEL),
    .TXDRV_FREQBAND (TXDRV_FREQBAND),
    .TXFE_CFG0 (TXFE_CFG0),
    .TXFE_CFG1 (TXFE_CFG1),
    .TXFE_CFG2 (TXFE_CFG2),
    .TXFE_CFG3 (TXFE_CFG3),
    .TXPI_CFG0 (TXPI_CFG0),
    .TXPI_CFG1 (TXPI_CFG1),
    .TXSWBST_EN (TXSWBST_EN),
    .CH_HSPMUX (CH_HSPMUX),
    .PREIQ_FREQ_BST (PREIQ_FREQ_BST),
    .RXPI_CFG0 (RXPI_CFG0),
    .RXPI_CFG1 (RXPI_CFG1),
    .RTX_BUF_CML_CTRL (RTX_BUF_CML_CTRL)
  ) i_xch_22 (
    .qpll2ch_clk (qpll2ch_clk_20),
    .qpll2ch_ref_clk (qpll2ch_ref_clk_20),
    .qpll2ch_locked (qpll2ch_locked_20),
    .qpll1_clk (qpll1_clk_20),
    .qpll1_ref_clk (qpll1_ref_clk_20),
    .qpll1_locked (qpll1_locked_20),
    .cpll_ref_clk (cpll_ref_clk_22),
    .up_cpll_rst (up_cpll_rst_22),
    .rx_p (rx_22_p),
    .rx_n (rx_22_n),
    .rx_out_clk (rx_out_clk_22),
    .rx_out_clk_div2 (rx_out_clk_div2_22),
    .rx_clk (rx_clk_22),
    .rx_clk_2x (rx_clk_2x_22),
    .rx_charisk (rx_charisk_22),
    .rx_disperr (rx_disperr_22),
    .rx_notintable (rx_notintable_22),
    .rx_data (rx_data_22),
    .rx_calign (rx_calign_22),
    .rx_header(rx_header_22),
    .rx_block_sync(rx_block_sync_22),
    .tx_p (tx_22_p),
    .tx_n (tx_22_n),
    .tx_out_clk (tx_out_clk_22),
    .tx_out_clk_div2 (tx_out_clk_div2_22),
    .tx_clk (tx_clk_22),
    .tx_clk_2x (tx_clk_2x_22),
    .tx_charisk (tx_charisk_22),
    .tx_data (tx_data_22),
    .tx_header (tx_header_22),
    .up_rstn (up_rstn),
    .up_clk (up_clk),
    .up_es_enb (up_es_enb_22),
    .up_es_addr (up_es_addr_22),
    .up_es_wr (up_es_wr_22),
    .up_es_wdata (up_es_wdata_22),
    .up_es_rdata (up_es_rdata_22),
    .up_es_ready (up_es_ready_22),
    .up_es_reset (up_es_reset_22),
    .up_rx_pll_locked (up_rx_pll_locked_22),
    .up_rx_rst (up_rx_rst_22),
    .up_rx_user_ready (up_rx_user_ready_22),
    .up_rx_rst_done (up_rx_rst_done_22),
    .up_rx_prbssel (up_rx_prbssel_22),
    .up_rx_prbscntreset (up_rx_prbscntreset_22),
    .up_rx_prbserr (up_rx_prbserr_22),
    .up_rx_prbslocked (up_rx_prbslocked_22),
    .up_rx_bufstatus (up_rx_bufstatus_22),
    .up_rx_bufstatus_rst (up_rx_bufstatus_rst_22),
    .up_rx_lpm_dfe_n (up_rx_lpm_dfe_n_22),
    .up_rx_rate (up_rx_rate_22),
    .up_rx_sys_clk_sel (up_rx_sys_clk_sel_22),
    .up_rx_out_clk_sel (up_rx_out_clk_sel_22),
    .up_rx_enb (up_rx_enb_22),
    .up_rx_addr (up_rx_addr_22),
    .up_rx_wr (up_rx_wr_22),
    .up_rx_wdata (up_rx_wdata_22),
    .up_rx_rdata (up_rx_rdata_22),
    .up_rx_ready (up_rx_ready_22),
    .up_tx_pll_locked (up_tx_pll_locked_22),
    .up_tx_rst (up_tx_rst_22),
    .up_tx_user_ready (up_tx_user_ready_22),
    .up_tx_rst_done (up_tx_rst_done_22),
    .up_tx_bufstatus (up_tx_bufstatus_22),
    .up_tx_prbsforceerr (up_tx_prbsforceerr_22),
    .up_tx_prbssel (up_tx_prbssel_22),
    .up_tx_lpm_dfe_n (up_tx_lpm_dfe_n_22),
    .up_tx_rate (up_tx_rate_22),
    .up_tx_sys_clk_sel (up_tx_sys_clk_sel_22),
    .up_tx_out_clk_sel (up_tx_out_clk_sel_22),
    .up_tx_diffctrl (up_tx_diffctrl_22),
    .up_tx_postcursor (up_tx_postcursor_22),
    .up_tx_precursor (up_tx_precursor_22),
    .up_tx_enb (up_tx_enb_22),
    .up_tx_addr (up_tx_addr_22),
    .up_tx_wr (up_tx_wr_22),
    .up_tx_wdata (up_tx_wdata_22),
    .up_tx_rdata (up_tx_rdata_22),
    .up_tx_ready (up_tx_ready_22));
  end else begin
  assign rx_out_clk_22 = 1'd0;
  assign rx_charisk_22 = 4'd0;
  assign rx_disperr_22 = 4'd0;
  assign rx_notintable_22 = 4'd0;
  assign rx_data_22 = 32'd0;
  assign tx_22_p = 1'd0;
  assign tx_22_n = 1'd0;
  assign tx_out_clk_22 = 1'd0;
  assign up_es_rdata_22 = 16'd0;
  assign up_es_ready_22 = 1'd0;
  assign up_rx_pll_locked_22 = 1'd0;
  assign up_rx_rst_done_22 = 1'd0;
  assign up_rx_rdata_22 = 16'd0;
  assign up_rx_ready_22 = 1'd0;
  assign up_tx_pll_locked_22 = 1'd0;
  assign up_tx_rst_done_22 = 1'd0;
  assign up_tx_rdata_22 = 16'd0;
  assign up_tx_ready_22 = 1'd0;
  end
  endgenerate

  generate
  if (NUM_OF_LANES >= 24) begin
  util_adxcvr_xch #(
    .XCVR_TYPE (XCVR_TYPE),
    .LINK_MODE (LINK_MODE),
    .DATA_PATH_WIDTH (DATA_PATH_WIDTH),
    .CPLL_FBDIV (CPLL_FBDIV),
    .CPLL_FBDIV_4_5 (CPLL_FBDIV_4_5),
    .CPLL_CFG0 (CPLL_CFG0),
    .CPLL_CFG1 (CPLL_CFG1),
    .CPLL_CFG2 (CPLL_CFG2),
    .CPLL_CFG3 (CPLL_CFG3),
    .TX_OUT_DIV (TX_OUT_DIV),
    .TX_CLK25_DIV (TX_CLK25_DIV),
    .TX_POLARITY ((TX_LANE_INVERT >> 23) & 1),
    .TX_PI_BIASSET (TX_PI_BIASSET),
    .TXPI_CFG (TXPI_CFG),
    .A_TXDIFFCTRL (A_TXDIFFCTRL),
    .RX_OUT_DIV (RX_OUT_DIV),
    .RX_CLK25_DIV (RX_CLK25_DIV),
    .RX_DFE_LPM_CFG (RX_DFE_LPM_CFG),
    .RX_PMA_CFG (RX_PMA_CFG),
    .RX_CDR_CFG (RX_CDR_CFG),
    .RX_POLARITY ((RX_LANE_INVERT >> 23) & 1),
    .RXCDR_CFG0 (RXCDR_CFG0),
    .RXCDR_CFG2 (RXCDR_CFG2),
    .RXCDR_CFG2_GEN2 (RXCDR_CFG2_GEN2),
    .RXCDR_CFG2_GEN4 (RXCDR_CFG2_GEN4),
    .RXCDR_CFG3 (RXCDR_CFG3),
    .RXCDR_CFG3_GEN2 (RXCDR_CFG3_GEN2),
    .RXCDR_CFG3_GEN3 (RXCDR_CFG3_GEN3),
    .RXCDR_CFG3_GEN4 (RXCDR_CFG3_GEN4),
    .RXDFE_KH_CFG2 (RXDFE_KH_CFG2),
    .RXDFE_KH_CFG3 (RXDFE_KH_CFG3),
    .RX_WIDEMODE_CDR (RX_WIDEMODE_CDR),
    .RX_XMODE_SEL (RX_XMODE_SEL),
    .TXDRV_FREQBAND (TXDRV_FREQBAND),
    .TXFE_CFG0 (TXFE_CFG0),
    .TXFE_CFG1 (TXFE_CFG1),
    .TXFE_CFG2 (TXFE_CFG2),
    .TXFE_CFG3 (TXFE_CFG3),
    .TXPI_CFG0 (TXPI_CFG0),
    .TXPI_CFG1 (TXPI_CFG1),
    .TXSWBST_EN (TXSWBST_EN),
    .CH_HSPMUX (CH_HSPMUX),
    .PREIQ_FREQ_BST (PREIQ_FREQ_BST),
    .RXPI_CFG0 (RXPI_CFG0),
    .RXPI_CFG1 (RXPI_CFG1),
    .RTX_BUF_CML_CTRL (RTX_BUF_CML_CTRL)
  ) i_xch_23 (
    .qpll2ch_clk (qpll2ch_clk_20),
    .qpll2ch_ref_clk (qpll2ch_ref_clk_20),
    .qpll2ch_locked (qpll2ch_locked_20),
    .qpll1_clk (qpll1_clk_20),
    .qpll1_ref_clk (qpll1_ref_clk_20),
    .qpll1_locked (qpll1_locked_20),
    .cpll_ref_clk (cpll_ref_clk_23),
    .up_cpll_rst (up_cpll_rst_23),
    .rx_p (rx_23_p),
    .rx_n (rx_23_n),
    .rx_out_clk (rx_out_clk_23),
    .rx_out_clk_div2 (rx_out_clk_div2_23),
    .rx_clk (rx_clk_23),
    .rx_clk_2x (rx_clk_2x_23),
    .rx_charisk (rx_charisk_23),
    .rx_disperr (rx_disperr_23),
    .rx_notintable (rx_notintable_23),
    .rx_data (rx_data_23),
    .rx_calign (rx_calign_23),
    .rx_header(rx_header_23),
    .rx_block_sync(rx_block_sync_23),
    .tx_p (tx_23_p),
    .tx_n (tx_23_n),
    .tx_out_clk (tx_out_clk_23),
    .tx_out_clk_div2 (tx_out_clk_div2_23),
    .tx_clk (tx_clk_23),
    .tx_clk_2x (tx_clk_2x_23),
    .tx_charisk (tx_charisk_23),
    .tx_data (tx_data_23),
    .tx_header (tx_header_23),
    .up_rstn (up_rstn),
    .up_clk (up_clk),
    .up_es_enb (up_es_enb_23),
    .up_es_addr (up_es_addr_23),
    .up_es_wr (up_es_wr_23),
    .up_es_wdata (up_es_wdata_23),
    .up_es_rdata (up_es_rdata_23),
    .up_es_ready (up_es_ready_23),
    .up_es_reset (up_es_reset_23),
    .up_rx_pll_locked (up_rx_pll_locked_23),
    .up_rx_rst (up_rx_rst_23),
    .up_rx_user_ready (up_rx_user_ready_23),
    .up_rx_rst_done (up_rx_rst_done_23),
    .up_rx_prbssel (up_rx_prbssel_23),
    .up_rx_prbscntreset (up_rx_prbscntreset_23),
    .up_rx_prbserr (up_rx_prbserr_23),
    .up_rx_prbslocked (up_rx_prbslocked_23),
    .up_rx_bufstatus (up_rx_bufstatus_23),
    .up_rx_bufstatus_rst (up_rx_bufstatus_rst_23),
    .up_rx_lpm_dfe_n (up_rx_lpm_dfe_n_23),
    .up_rx_rate (up_rx_rate_23),
    .up_rx_sys_clk_sel (up_rx_sys_clk_sel_23),
    .up_rx_out_clk_sel (up_rx_out_clk_sel_23),
    .up_rx_enb (up_rx_enb_23),
    .up_rx_addr (up_rx_addr_23),
    .up_rx_wr (up_rx_wr_23),
    .up_rx_wdata (up_rx_wdata_23),
    .up_rx_rdata (up_rx_rdata_23),
    .up_rx_ready (up_rx_ready_23),
    .up_tx_pll_locked (up_tx_pll_locked_23),
    .up_tx_rst (up_tx_rst_23),
    .up_tx_user_ready (up_tx_user_ready_23),
    .up_tx_rst_done (up_tx_rst_done_23),
    .up_tx_bufstatus (up_tx_bufstatus_23),
    .up_tx_prbsforceerr (up_tx_prbsforceerr_23),
    .up_tx_prbssel (up_tx_prbssel_23),
    .up_tx_lpm_dfe_n (up_tx_lpm_dfe_n_23),
    .up_tx_rate (up_tx_rate_23),
    .up_tx_sys_clk_sel (up_tx_sys_clk_sel_23),
    .up_tx_out_clk_sel (up_tx_out_clk_sel_23),
    .up_tx_diffctrl (up_tx_diffctrl_23),
    .up_tx_postcursor (up_tx_postcursor_23),
    .up_tx_precursor (up_tx_precursor_23),
    .up_tx_enb (up_tx_enb_23),
    .up_tx_addr (up_tx_addr_23),
    .up_tx_wr (up_tx_wr_23),
    .up_tx_wdata (up_tx_wdata_23),
    .up_tx_rdata (up_tx_rdata_23),
    .up_tx_ready (up_tx_ready_23));
  end else begin
  assign rx_out_clk_23 = 1'd0;
  assign rx_charisk_23 = 4'd0;
  assign rx_disperr_23 = 4'd0;
  assign rx_notintable_23 = 4'd0;
  assign rx_data_23 = 32'd0;
  assign tx_23_p = 1'd0;
  assign tx_23_n = 1'd0;
  assign tx_out_clk_23 = 1'd0;
  assign up_es_rdata_23 = 16'd0;
  assign up_es_ready_23 = 1'd0;
  assign up_rx_pll_locked_23 = 1'd0;
  assign up_rx_rst_done_23 = 1'd0;
  assign up_rx_rdata_23 = 16'd0;
  assign up_rx_ready_23 = 1'd0;
  assign up_tx_pll_locked_23 = 1'd0;
  assign up_tx_rst_done_23 = 1'd0;
  assign up_tx_rdata_23 = 16'd0;
  assign up_tx_ready_23 = 1'd0;
  end
  endgenerate

  generate
  if (NUM_OF_LANES >= 25) begin
  util_adxcvr_xcm #(
    .XCVR_TYPE (XCVR_TYPE),
    .QPLL_REFCLK_DIV (QPLL_REFCLK_DIV),
    .QPLL_FBDIV_RATIO (QPLL_FBDIV_RATIO),
    .POR_CFG (POR_CFG),
    .PPF0_CFG (PPF0_CFG),
    .PPF1_CFG (PPF1_CFG),
    .QPLL_CFG (QPLL_CFG),
    .QPLL_FBDIV (QPLL_FBDIV),
    .QPLL_CFG0 (QPLL_CFG0),
    .QPLL_CFG1 (QPLL_CFG1),
    .QPLL_CFG1_G3 (QPLL_CFG1_G3),
    .QPLL_CFG2 (QPLL_CFG2),
    .QPLL_CFG2_G3 (QPLL_CFG2_G3),
    .QPLL_CFG3 (QPLL_CFG3),
    .QPLL_CP_G3 (QPLL_CP_G3),
    .QPLL_LPF (QPLL_LPF),
    .QPLL_CP (QPLL_CP),
    .QPLL_CFG4 (QPLL_CFG4)
  ) i_xcm_24 (
    .qpll_ref_clk (qpll_ref_clk_24),
    .qpll_sel (qpll_sel_24),
    .qpll2ch_clk (qpll2ch_clk_24),
    .qpll2ch_ref_clk (qpll2ch_ref_clk_24),
    .qpll2ch_locked (qpll2ch_locked_24),
    .qpll1_clk (qpll1_clk_24),
    .qpll1_ref_clk (qpll1_ref_clk_24),
    .qpll1_locked (qpll1_locked_24),
    .up_rstn (up_rstn),
    .up_clk (up_clk),
    .up_qpll_rst (up_qpll_rst_24),
    .up_cm_enb (up_cm_enb_24),
    .up_cm_addr (up_cm_addr_24),
    .up_cm_wr (up_cm_wr_24),
    .up_cm_wdata (up_cm_wdata_24),
    .up_cm_rdata (up_cm_rdata_24),
    .up_cm_ready (up_cm_ready_24));
  end else begin
  assign qpll2ch_clk_24 = 1'd0;
  assign qpll2ch_ref_clk_24 = 1'd0;
  assign qpll2ch_locked_24 = 1'd0;
  assign qpll1_clk_24 = 1'd0;
  assign qpll1_ref_clk_24 = 1'd0;
  assign qpll1_locked_24 = 1'd0;
  assign up_cm_rdata_24 = 16'd0;
  assign up_cm_ready_24 = 1'd0;
  end
  endgenerate

  generate
  if (NUM_OF_LANES >= 25) begin
  util_adxcvr_xch #(
    .XCVR_TYPE (XCVR_TYPE),
    .LINK_MODE (LINK_MODE),
    .DATA_PATH_WIDTH (DATA_PATH_WIDTH),
    .CPLL_FBDIV (CPLL_FBDIV),
    .CPLL_FBDIV_4_5 (CPLL_FBDIV_4_5),
    .CPLL_CFG0 (CPLL_CFG0),
    .CPLL_CFG1 (CPLL_CFG1),
    .CPLL_CFG2 (CPLL_CFG2),
    .CPLL_CFG3 (CPLL_CFG3),
    .TX_OUT_DIV (TX_OUT_DIV),
    .TX_CLK25_DIV (TX_CLK25_DIV),
    .TX_POLARITY ((TX_LANE_INVERT >> 24) & 1),
    .TX_PI_BIASSET (TX_PI_BIASSET),
    .TXPI_CFG (TXPI_CFG),
    .A_TXDIFFCTRL (A_TXDIFFCTRL),
    .RX_OUT_DIV (RX_OUT_DIV),
    .RX_CLK25_DIV (RX_CLK25_DIV),
    .RX_DFE_LPM_CFG (RX_DFE_LPM_CFG),
    .RX_PMA_CFG (RX_PMA_CFG),
    .RX_CDR_CFG (RX_CDR_CFG),
    .RX_POLARITY ((RX_LANE_INVERT >> 24) & 1),
    .RXCDR_CFG0 (RXCDR_CFG0),
    .RXCDR_CFG2 (RXCDR_CFG2),
    .RXCDR_CFG2_GEN2 (RXCDR_CFG2_GEN2),
    .RXCDR_CFG2_GEN4 (RXCDR_CFG2_GEN4),
    .RXCDR_CFG3 (RXCDR_CFG3),
    .RXCDR_CFG3_GEN2 (RXCDR_CFG3_GEN2),
    .RXCDR_CFG3_GEN3 (RXCDR_CFG3_GEN3),
    .RXCDR_CFG3_GEN4 (RXCDR_CFG3_GEN4),
    .RXDFE_KH_CFG2 (RXDFE_KH_CFG2),
    .RXDFE_KH_CFG3 (RXDFE_KH_CFG3),
    .RX_WIDEMODE_CDR (RX_WIDEMODE_CDR),
    .RX_XMODE_SEL (RX_XMODE_SEL),
    .TXDRV_FREQBAND (TXDRV_FREQBAND),
    .TXFE_CFG0 (TXFE_CFG0),
    .TXFE_CFG1 (TXFE_CFG1),
    .TXFE_CFG2 (TXFE_CFG2),
    .TXFE_CFG3 (TXFE_CFG3),
    .TXPI_CFG0 (TXPI_CFG0),
    .TXPI_CFG1 (TXPI_CFG1),
    .TXSWBST_EN (TXSWBST_EN),
    .CH_HSPMUX (CH_HSPMUX),
    .PREIQ_FREQ_BST (PREIQ_FREQ_BST),
    .RXPI_CFG0 (RXPI_CFG0),
    .RXPI_CFG1 (RXPI_CFG1),
    .RTX_BUF_CML_CTRL (RTX_BUF_CML_CTRL)
  ) i_xch_24 (
    .qpll2ch_clk (qpll2ch_clk_24),
    .qpll2ch_ref_clk (qpll2ch_ref_clk_24),
    .qpll2ch_locked (qpll2ch_locked_24),
    .qpll1_clk (qpll1_clk_24),
    .qpll1_ref_clk (qpll1_ref_clk_24),
    .qpll1_locked (qpll1_locked_24),
    .cpll_ref_clk (cpll_ref_clk_24),
    .up_cpll_rst (up_cpll_rst_24),
    .rx_p (rx_24_p),
    .rx_n (rx_24_n),
    .rx_out_clk (rx_out_clk_24),
    .rx_out_clk_div2 (rx_out_clk_div2_24),
    .rx_clk (rx_clk_24),
    .rx_clk_2x (rx_clk_2x_24),
    .rx_charisk (rx_charisk_24),
    .rx_disperr (rx_disperr_24),
    .rx_notintable (rx_notintable_24),
    .rx_data (rx_data_24),
    .rx_calign (rx_calign_24),
    .rx_header(rx_header_24),
    .rx_block_sync(rx_block_sync_24),
    .tx_p (tx_24_p),
    .tx_n (tx_24_n),
    .tx_out_clk (tx_out_clk_24),
    .tx_out_clk_div2 (tx_out_clk_div2_24),
    .tx_clk (tx_clk_24),
    .tx_clk_2x (tx_clk_2x_24),
    .tx_charisk (tx_charisk_24),
    .tx_data (tx_data_24),
    .tx_header (tx_header_24),
    .up_rstn (up_rstn),
    .up_clk (up_clk),
    .up_es_enb (up_es_enb_24),
    .up_es_addr (up_es_addr_24),
    .up_es_wr (up_es_wr_24),
    .up_es_wdata (up_es_wdata_24),
    .up_es_rdata (up_es_rdata_24),
    .up_es_ready (up_es_ready_24),
    .up_es_reset (up_es_reset_24),
    .up_rx_pll_locked (up_rx_pll_locked_24),
    .up_rx_rst (up_rx_rst_24),
    .up_rx_user_ready (up_rx_user_ready_24),
    .up_rx_rst_done (up_rx_rst_done_24),
    .up_rx_prbssel (up_rx_prbssel_24),
    .up_rx_prbscntreset (up_rx_prbscntreset_24),
    .up_rx_prbserr (up_rx_prbserr_24),
    .up_rx_prbslocked (up_rx_prbslocked_24),
    .up_rx_bufstatus (up_rx_bufstatus_24),
    .up_rx_bufstatus_rst (up_rx_bufstatus_rst_24),
    .up_rx_lpm_dfe_n (up_rx_lpm_dfe_n_24),
    .up_rx_rate (up_rx_rate_24),
    .up_rx_sys_clk_sel (up_rx_sys_clk_sel_24),
    .up_rx_out_clk_sel (up_rx_out_clk_sel_24),
    .up_rx_enb (up_rx_enb_24),
    .up_rx_addr (up_rx_addr_24),
    .up_rx_wr (up_rx_wr_24),
    .up_rx_wdata (up_rx_wdata_24),
    .up_rx_rdata (up_rx_rdata_24),
    .up_rx_ready (up_rx_ready_24),
    .up_tx_pll_locked (up_tx_pll_locked_24),
    .up_tx_rst (up_tx_rst_24),
    .up_tx_user_ready (up_tx_user_ready_24),
    .up_tx_rst_done (up_tx_rst_done_24),
    .up_tx_bufstatus (up_tx_bufstatus_24),
    .up_tx_prbsforceerr (up_tx_prbsforceerr_24),
    .up_tx_prbssel (up_tx_prbssel_24),
    .up_tx_lpm_dfe_n (up_tx_lpm_dfe_n_24),
    .up_tx_rate (up_tx_rate_24),
    .up_tx_sys_clk_sel (up_tx_sys_clk_sel_24),
    .up_tx_out_clk_sel (up_tx_out_clk_sel_24),
    .up_tx_diffctrl (up_tx_diffctrl_24),
    .up_tx_postcursor (up_tx_postcursor_24),
    .up_tx_precursor (up_tx_precursor_24),
    .up_tx_enb (up_tx_enb_24),
    .up_tx_addr (up_tx_addr_24),
    .up_tx_wr (up_tx_wr_24),
    .up_tx_wdata (up_tx_wdata_24),
    .up_tx_rdata (up_tx_rdata_24),
    .up_tx_ready (up_tx_ready_24));
  end else begin
  assign rx_out_clk_24 = 1'd0;
  assign rx_charisk_24 = 4'd0;
  assign rx_disperr_24 = 4'd0;
  assign rx_notintable_24 = 4'd0;
  assign rx_data_24 = 32'd0;
  assign tx_24_p = 1'd0;
  assign tx_24_n = 1'd0;
  assign tx_out_clk_24 = 1'd0;
  assign up_es_rdata_24 = 16'd0;
  assign up_es_ready_24 = 1'd0;
  assign up_rx_pll_locked_24 = 1'd0;
  assign up_rx_rst_done_24 = 1'd0;
  assign up_rx_rdata_24 = 16'd0;
  assign up_rx_ready_24 = 1'd0;
  assign up_tx_pll_locked_24 = 1'd0;
  assign up_tx_rst_done_24 = 1'd0;
  assign up_tx_rdata_24 = 16'd0;
  assign up_tx_ready_24 = 1'd0;
  end
  endgenerate

  generate
  if (NUM_OF_LANES >= 26) begin
  util_adxcvr_xch #(
    .XCVR_TYPE (XCVR_TYPE),
    .LINK_MODE (LINK_MODE),
    .DATA_PATH_WIDTH (DATA_PATH_WIDTH),
    .CPLL_FBDIV (CPLL_FBDIV),
    .CPLL_FBDIV_4_5 (CPLL_FBDIV_4_5),
    .CPLL_CFG0 (CPLL_CFG0),
    .CPLL_CFG1 (CPLL_CFG1),
    .CPLL_CFG2 (CPLL_CFG2),
    .CPLL_CFG3 (CPLL_CFG3),
    .TX_OUT_DIV (TX_OUT_DIV),
    .TX_CLK25_DIV (TX_CLK25_DIV),
    .TX_POLARITY ((TX_LANE_INVERT >> 25) & 1),
    .TX_PI_BIASSET (TX_PI_BIASSET),
    .TXPI_CFG (TXPI_CFG),
    .A_TXDIFFCTRL (A_TXDIFFCTRL),
    .RX_OUT_DIV (RX_OUT_DIV),
    .RX_CLK25_DIV (RX_CLK25_DIV),
    .RX_DFE_LPM_CFG (RX_DFE_LPM_CFG),
    .RX_PMA_CFG (RX_PMA_CFG),
    .RX_CDR_CFG (RX_CDR_CFG),
    .RX_POLARITY ((RX_LANE_INVERT >> 25) & 1),
    .RXCDR_CFG0 (RXCDR_CFG0),
    .RXCDR_CFG2 (RXCDR_CFG2),
    .RXCDR_CFG2_GEN2 (RXCDR_CFG2_GEN2),
    .RXCDR_CFG2_GEN4 (RXCDR_CFG2_GEN4),
    .RXCDR_CFG3 (RXCDR_CFG3),
    .RXCDR_CFG3_GEN2 (RXCDR_CFG3_GEN2),
    .RXCDR_CFG3_GEN3 (RXCDR_CFG3_GEN3),
    .RXCDR_CFG3_GEN4 (RXCDR_CFG3_GEN4),
    .RXDFE_KH_CFG2 (RXDFE_KH_CFG2),
    .RXDFE_KH_CFG3 (RXDFE_KH_CFG3),
    .RX_WIDEMODE_CDR (RX_WIDEMODE_CDR),
    .RX_XMODE_SEL (RX_XMODE_SEL),
    .TXDRV_FREQBAND (TXDRV_FREQBAND),
    .TXFE_CFG0 (TXFE_CFG0),
    .TXFE_CFG1 (TXFE_CFG1),
    .TXFE_CFG2 (TXFE_CFG2),
    .TXFE_CFG3 (TXFE_CFG3),
    .TXPI_CFG0 (TXPI_CFG0),
    .TXPI_CFG1 (TXPI_CFG1),
    .TXSWBST_EN (TXSWBST_EN),
    .CH_HSPMUX (CH_HSPMUX),
    .PREIQ_FREQ_BST (PREIQ_FREQ_BST),
    .RXPI_CFG0 (RXPI_CFG0),
    .RXPI_CFG1 (RXPI_CFG1),
    .RTX_BUF_CML_CTRL (RTX_BUF_CML_CTRL)
  ) i_xch_25 (
    .qpll2ch_clk (qpll2ch_clk_24),
    .qpll2ch_ref_clk (qpll2ch_ref_clk_24),
    .qpll2ch_locked (qpll2ch_locked_24),
    .qpll1_clk (qpll1_clk_24),
    .qpll1_ref_clk (qpll1_ref_clk_24),
    .qpll1_locked (qpll1_locked_24),
    .cpll_ref_clk (cpll_ref_clk_25),
    .up_cpll_rst (up_cpll_rst_25),
    .rx_p (rx_25_p),
    .rx_n (rx_25_n),
    .rx_out_clk (rx_out_clk_25),
    .rx_out_clk_div2 (rx_out_clk_div2_25),
    .rx_clk (rx_clk_25),
    .rx_clk_2x (rx_clk_2x_25),
    .rx_charisk (rx_charisk_25),
    .rx_disperr (rx_disperr_25),
    .rx_notintable (rx_notintable_25),
    .rx_data (rx_data_25),
    .rx_calign (rx_calign_25),
    .rx_header(rx_header_25),
    .rx_block_sync(rx_block_sync_25),
    .tx_p (tx_25_p),
    .tx_n (tx_25_n),
    .tx_out_clk (tx_out_clk_25),
    .tx_out_clk_div2 (tx_out_clk_div2_25),
    .tx_clk (tx_clk_25),
    .tx_clk_2x (tx_clk_2x_25),
    .tx_charisk (tx_charisk_25),
    .tx_data (tx_data_25),
    .tx_header (tx_header_25),
    .up_rstn (up_rstn),
    .up_clk (up_clk),
    .up_es_enb (up_es_enb_25),
    .up_es_addr (up_es_addr_25),
    .up_es_wr (up_es_wr_25),
    .up_es_wdata (up_es_wdata_25),
    .up_es_rdata (up_es_rdata_25),
    .up_es_ready (up_es_ready_25),
    .up_es_reset (up_es_reset_25),
    .up_rx_pll_locked (up_rx_pll_locked_25),
    .up_rx_rst (up_rx_rst_25),
    .up_rx_user_ready (up_rx_user_ready_25),
    .up_rx_rst_done (up_rx_rst_done_25),
    .up_rx_prbssel (up_rx_prbssel_25),
    .up_rx_prbscntreset (up_rx_prbscntreset_25),
    .up_rx_prbserr (up_rx_prbserr_25),
    .up_rx_prbslocked (up_rx_prbslocked_25),
    .up_rx_bufstatus (up_rx_bufstatus_25),
    .up_rx_bufstatus_rst (up_rx_bufstatus_rst_25),
    .up_rx_lpm_dfe_n (up_rx_lpm_dfe_n_25),
    .up_rx_rate (up_rx_rate_25),
    .up_rx_sys_clk_sel (up_rx_sys_clk_sel_25),
    .up_rx_out_clk_sel (up_rx_out_clk_sel_25),
    .up_rx_enb (up_rx_enb_25),
    .up_rx_addr (up_rx_addr_25),
    .up_rx_wr (up_rx_wr_25),
    .up_rx_wdata (up_rx_wdata_25),
    .up_rx_rdata (up_rx_rdata_25),
    .up_rx_ready (up_rx_ready_25),
    .up_tx_pll_locked (up_tx_pll_locked_25),
    .up_tx_rst (up_tx_rst_25),
    .up_tx_user_ready (up_tx_user_ready_25),
    .up_tx_rst_done (up_tx_rst_done_25),
    .up_tx_bufstatus (up_tx_bufstatus_25),
    .up_tx_prbsforceerr (up_tx_prbsforceerr_25),
    .up_tx_prbssel (up_tx_prbssel_25),
    .up_tx_lpm_dfe_n (up_tx_lpm_dfe_n_25),
    .up_tx_rate (up_tx_rate_25),
    .up_tx_sys_clk_sel (up_tx_sys_clk_sel_25),
    .up_tx_out_clk_sel (up_tx_out_clk_sel_25),
    .up_tx_diffctrl (up_tx_diffctrl_25),
    .up_tx_postcursor (up_tx_postcursor_25),
    .up_tx_precursor (up_tx_precursor_25),
    .up_tx_enb (up_tx_enb_25),
    .up_tx_addr (up_tx_addr_25),
    .up_tx_wr (up_tx_wr_25),
    .up_tx_wdata (up_tx_wdata_25),
    .up_tx_rdata (up_tx_rdata_25),
    .up_tx_ready (up_tx_ready_25));
  end else begin
  assign rx_out_clk_25 = 1'd0;
  assign rx_charisk_25 = 4'd0;
  assign rx_disperr_25 = 4'd0;
  assign rx_notintable_25 = 4'd0;
  assign rx_data_25 = 32'd0;
  assign tx_25_p = 1'd0;
  assign tx_25_n = 1'd0;
  assign tx_out_clk_25 = 1'd0;
  assign up_es_rdata_25 = 16'd0;
  assign up_es_ready_25 = 1'd0;
  assign up_rx_pll_locked_25 = 1'd0;
  assign up_rx_rst_done_25 = 1'd0;
  assign up_rx_rdata_25 = 16'd0;
  assign up_rx_ready_25 = 1'd0;
  assign up_tx_pll_locked_25 = 1'd0;
  assign up_tx_rst_done_25 = 1'd0;
  assign up_tx_rdata_25 = 16'd0;
  assign up_tx_ready_25 = 1'd0;
  end
  endgenerate

  generate
  if (NUM_OF_LANES >= 27) begin
  util_adxcvr_xch #(
    .XCVR_TYPE (XCVR_TYPE),
    .LINK_MODE (LINK_MODE),
    .DATA_PATH_WIDTH (DATA_PATH_WIDTH),
    .CPLL_FBDIV (CPLL_FBDIV),
    .CPLL_FBDIV_4_5 (CPLL_FBDIV_4_5),
    .CPLL_CFG0 (CPLL_CFG0),
    .CPLL_CFG1 (CPLL_CFG1),
    .CPLL_CFG2 (CPLL_CFG2),
    .CPLL_CFG3 (CPLL_CFG3),
    .TX_OUT_DIV (TX_OUT_DIV),
    .TX_CLK25_DIV (TX_CLK25_DIV),
    .TX_POLARITY ((TX_LANE_INVERT >> 26) & 1),
    .TX_PI_BIASSET (TX_PI_BIASSET),
    .TXPI_CFG (TXPI_CFG),
    .A_TXDIFFCTRL (A_TXDIFFCTRL),
    .RX_OUT_DIV (RX_OUT_DIV),
    .RX_CLK25_DIV (RX_CLK25_DIV),
    .RX_DFE_LPM_CFG (RX_DFE_LPM_CFG),
    .RX_PMA_CFG (RX_PMA_CFG),
    .RX_CDR_CFG (RX_CDR_CFG),
    .RX_POLARITY ((RX_LANE_INVERT >> 26) & 1),
    .RXCDR_CFG0 (RXCDR_CFG0),
    .RXCDR_CFG2 (RXCDR_CFG2),
    .RXCDR_CFG2_GEN2 (RXCDR_CFG2_GEN2),
    .RXCDR_CFG2_GEN4 (RXCDR_CFG2_GEN4),
    .RXCDR_CFG3 (RXCDR_CFG3),
    .RXCDR_CFG3_GEN2 (RXCDR_CFG3_GEN2),
    .RXCDR_CFG3_GEN3 (RXCDR_CFG3_GEN3),
    .RXCDR_CFG3_GEN4 (RXCDR_CFG3_GEN4),
    .RXDFE_KH_CFG2 (RXDFE_KH_CFG2),
    .RXDFE_KH_CFG3 (RXDFE_KH_CFG3),
    .RX_WIDEMODE_CDR (RX_WIDEMODE_CDR),
    .RX_XMODE_SEL (RX_XMODE_SEL),
    .TXDRV_FREQBAND (TXDRV_FREQBAND),
    .TXFE_CFG0 (TXFE_CFG0),
    .TXFE_CFG1 (TXFE_CFG1),
    .TXFE_CFG2 (TXFE_CFG2),
    .TXFE_CFG3 (TXFE_CFG3),
    .TXPI_CFG0 (TXPI_CFG0),
    .TXPI_CFG1 (TXPI_CFG1),
    .TXSWBST_EN (TXSWBST_EN),
    .CH_HSPMUX (CH_HSPMUX),
    .PREIQ_FREQ_BST (PREIQ_FREQ_BST),
    .RXPI_CFG0 (RXPI_CFG0),
    .RXPI_CFG1 (RXPI_CFG1),
    .RTX_BUF_CML_CTRL (RTX_BUF_CML_CTRL)
  ) i_xch_26 (
    .qpll2ch_clk (qpll2ch_clk_24),
    .qpll2ch_ref_clk (qpll2ch_ref_clk_24),
    .qpll2ch_locked (qpll2ch_locked_24),
    .qpll1_clk (qpll1_clk_24),
    .qpll1_ref_clk (qpll1_ref_clk_24),
    .qpll1_locked (qpll1_locked_24),
    .cpll_ref_clk (cpll_ref_clk_26),
    .up_cpll_rst (up_cpll_rst_26),
    .rx_p (rx_26_p),
    .rx_n (rx_26_n),
    .rx_out_clk (rx_out_clk_26),
    .rx_out_clk_div2 (rx_out_clk_div2_26),
    .rx_clk (rx_clk_26),
    .rx_clk_2x (rx_clk_2x_26),
    .rx_charisk (rx_charisk_26),
    .rx_disperr (rx_disperr_26),
    .rx_notintable (rx_notintable_26),
    .rx_data (rx_data_26),
    .rx_calign (rx_calign_26),
    .rx_header(rx_header_26),
    .rx_block_sync(rx_block_sync_26),
    .tx_p (tx_26_p),
    .tx_n (tx_26_n),
    .tx_out_clk (tx_out_clk_26),
    .tx_out_clk_div2 (tx_out_clk_div2_26),
    .tx_clk (tx_clk_26),
    .tx_clk_2x (tx_clk_2x_26),
    .tx_charisk (tx_charisk_26),
    .tx_data (tx_data_26),
    .tx_header (tx_header_26),
    .up_rstn (up_rstn),
    .up_clk (up_clk),
    .up_es_enb (up_es_enb_26),
    .up_es_addr (up_es_addr_26),
    .up_es_wr (up_es_wr_26),
    .up_es_wdata (up_es_wdata_26),
    .up_es_rdata (up_es_rdata_26),
    .up_es_ready (up_es_ready_26),
    .up_es_reset (up_es_reset_26),
    .up_rx_pll_locked (up_rx_pll_locked_26),
    .up_rx_rst (up_rx_rst_26),
    .up_rx_user_ready (up_rx_user_ready_26),
    .up_rx_rst_done (up_rx_rst_done_26),
    .up_rx_prbssel (up_rx_prbssel_26),
    .up_rx_prbscntreset (up_rx_prbscntreset_26),
    .up_rx_prbserr (up_rx_prbserr_26),
    .up_rx_prbslocked (up_rx_prbslocked_26),
    .up_rx_bufstatus (up_rx_bufstatus_26),
    .up_rx_bufstatus_rst (up_rx_bufstatus_rst_26),
    .up_rx_lpm_dfe_n (up_rx_lpm_dfe_n_26),
    .up_rx_rate (up_rx_rate_26),
    .up_rx_sys_clk_sel (up_rx_sys_clk_sel_26),
    .up_rx_out_clk_sel (up_rx_out_clk_sel_26),
    .up_rx_enb (up_rx_enb_26),
    .up_rx_addr (up_rx_addr_26),
    .up_rx_wr (up_rx_wr_26),
    .up_rx_wdata (up_rx_wdata_26),
    .up_rx_rdata (up_rx_rdata_26),
    .up_rx_ready (up_rx_ready_26),
    .up_tx_pll_locked (up_tx_pll_locked_26),
    .up_tx_rst (up_tx_rst_26),
    .up_tx_user_ready (up_tx_user_ready_26),
    .up_tx_rst_done (up_tx_rst_done_26),
    .up_tx_bufstatus (up_tx_bufstatus_26),
    .up_tx_prbsforceerr (up_tx_prbsforceerr_26),
    .up_tx_prbssel (up_tx_prbssel_26),
    .up_tx_lpm_dfe_n (up_tx_lpm_dfe_n_26),
    .up_tx_rate (up_tx_rate_26),
    .up_tx_sys_clk_sel (up_tx_sys_clk_sel_26),
    .up_tx_out_clk_sel (up_tx_out_clk_sel_26),
    .up_tx_diffctrl (up_tx_diffctrl_26),
    .up_tx_postcursor (up_tx_postcursor_26),
    .up_tx_precursor (up_tx_precursor_26),
    .up_tx_enb (up_tx_enb_26),
    .up_tx_addr (up_tx_addr_26),
    .up_tx_wr (up_tx_wr_26),
    .up_tx_wdata (up_tx_wdata_26),
    .up_tx_rdata (up_tx_rdata_26),
    .up_tx_ready (up_tx_ready_26));
  end else begin
  assign rx_out_clk_26 = 1'd0;
  assign rx_charisk_26 = 4'd0;
  assign rx_disperr_26 = 4'd0;
  assign rx_notintable_26 = 4'd0;
  assign rx_data_26 = 32'd0;
  assign tx_26_p = 1'd0;
  assign tx_26_n = 1'd0;
  assign tx_out_clk_26 = 1'd0;
  assign up_es_rdata_26 = 16'd0;
  assign up_es_ready_26 = 1'd0;
  assign up_rx_pll_locked_26 = 1'd0;
  assign up_rx_rst_done_26 = 1'd0;
  assign up_rx_rdata_26 = 16'd0;
  assign up_rx_ready_26 = 1'd0;
  assign up_tx_pll_locked_26 = 1'd0;
  assign up_tx_rst_done_26 = 1'd0;
  assign up_tx_rdata_26 = 16'd0;
  assign up_tx_ready_26 = 1'd0;
  end
  endgenerate

  generate
  if (NUM_OF_LANES >= 28) begin
  util_adxcvr_xch #(
    .XCVR_TYPE (XCVR_TYPE),
    .LINK_MODE (LINK_MODE),
    .DATA_PATH_WIDTH (DATA_PATH_WIDTH),
    .CPLL_FBDIV (CPLL_FBDIV),
    .CPLL_FBDIV_4_5 (CPLL_FBDIV_4_5),
    .CPLL_CFG0 (CPLL_CFG0),
    .CPLL_CFG1 (CPLL_CFG1),
    .CPLL_CFG2 (CPLL_CFG2),
    .CPLL_CFG3 (CPLL_CFG3),
    .TX_OUT_DIV (TX_OUT_DIV),
    .TX_CLK25_DIV (TX_CLK25_DIV),
    .TX_POLARITY ((TX_LANE_INVERT >> 27) & 1),
    .TX_PI_BIASSET (TX_PI_BIASSET),
    .TXPI_CFG (TXPI_CFG),
    .A_TXDIFFCTRL (A_TXDIFFCTRL),
    .RX_OUT_DIV (RX_OUT_DIV),
    .RX_CLK25_DIV (RX_CLK25_DIV),
    .RX_DFE_LPM_CFG (RX_DFE_LPM_CFG),
    .RX_PMA_CFG (RX_PMA_CFG),
    .RX_CDR_CFG (RX_CDR_CFG),
    .RX_POLARITY ((RX_LANE_INVERT >> 27) & 1),
    .RXCDR_CFG0 (RXCDR_CFG0),
    .RXCDR_CFG2 (RXCDR_CFG2),
    .RXCDR_CFG2_GEN2 (RXCDR_CFG2_GEN2),
    .RXCDR_CFG2_GEN4 (RXCDR_CFG2_GEN4),
    .RXCDR_CFG3 (RXCDR_CFG3),
    .RXCDR_CFG3_GEN2 (RXCDR_CFG3_GEN2),
    .RXCDR_CFG3_GEN3 (RXCDR_CFG3_GEN3),
    .RXCDR_CFG3_GEN4 (RXCDR_CFG3_GEN4),
    .RXDFE_KH_CFG2 (RXDFE_KH_CFG2),
    .RXDFE_KH_CFG3 (RXDFE_KH_CFG3),
    .RX_WIDEMODE_CDR (RX_WIDEMODE_CDR),
    .RX_XMODE_SEL (RX_XMODE_SEL),
    .TXDRV_FREQBAND (TXDRV_FREQBAND),
    .TXFE_CFG0 (TXFE_CFG0),
    .TXFE_CFG1 (TXFE_CFG1),
    .TXFE_CFG2 (TXFE_CFG2),
    .TXFE_CFG3 (TXFE_CFG3),
    .TXPI_CFG0 (TXPI_CFG0),
    .TXPI_CFG1 (TXPI_CFG1),
    .TXSWBST_EN (TXSWBST_EN),
    .CH_HSPMUX (CH_HSPMUX),
    .PREIQ_FREQ_BST (PREIQ_FREQ_BST),
    .RXPI_CFG0 (RXPI_CFG0),
    .RXPI_CFG1 (RXPI_CFG1),
    .RTX_BUF_CML_CTRL (RTX_BUF_CML_CTRL)
  ) i_xch_27 (
    .qpll2ch_clk (qpll2ch_clk_24),
    .qpll2ch_ref_clk (qpll2ch_ref_clk_24),
    .qpll2ch_locked (qpll2ch_locked_24),
    .qpll1_clk (qpll1_clk_24),
    .qpll1_ref_clk (qpll1_ref_clk_24),
    .qpll1_locked (qpll1_locked_24),
    .cpll_ref_clk (cpll_ref_clk_27),
    .up_cpll_rst (up_cpll_rst_27),
    .rx_p (rx_27_p),
    .rx_n (rx_27_n),
    .rx_out_clk (rx_out_clk_27),
    .rx_out_clk_div2 (rx_out_clk_div2_27),
    .rx_clk (rx_clk_27),
    .rx_clk_2x (rx_clk_2x_27),
    .rx_charisk (rx_charisk_27),
    .rx_disperr (rx_disperr_27),
    .rx_notintable (rx_notintable_27),
    .rx_data (rx_data_27),
    .rx_calign (rx_calign_27),
    .rx_header(rx_header_27),
    .rx_block_sync(rx_block_sync_27),
    .tx_p (tx_27_p),
    .tx_n (tx_27_n),
    .tx_out_clk (tx_out_clk_27),
    .tx_out_clk_div2 (tx_out_clk_div2_27),
    .tx_clk (tx_clk_27),
    .tx_clk_2x (tx_clk_2x_27),
    .tx_charisk (tx_charisk_27),
    .tx_data (tx_data_27),
    .tx_header (tx_header_27),
    .up_rstn (up_rstn),
    .up_clk (up_clk),
    .up_es_enb (up_es_enb_27),
    .up_es_addr (up_es_addr_27),
    .up_es_wr (up_es_wr_27),
    .up_es_wdata (up_es_wdata_27),
    .up_es_rdata (up_es_rdata_27),
    .up_es_ready (up_es_ready_27),
    .up_es_reset (up_es_reset_27),
    .up_rx_pll_locked (up_rx_pll_locked_27),
    .up_rx_rst (up_rx_rst_27),
    .up_rx_user_ready (up_rx_user_ready_27),
    .up_rx_rst_done (up_rx_rst_done_27),
    .up_rx_prbssel (up_rx_prbssel_27),
    .up_rx_prbscntreset (up_rx_prbscntreset_27),
    .up_rx_prbserr (up_rx_prbserr_27),
    .up_rx_prbslocked (up_rx_prbslocked_27),
    .up_rx_bufstatus (up_rx_bufstatus_27),
    .up_rx_bufstatus_rst (up_rx_bufstatus_rst_27),
    .up_rx_lpm_dfe_n (up_rx_lpm_dfe_n_27),
    .up_rx_rate (up_rx_rate_27),
    .up_rx_sys_clk_sel (up_rx_sys_clk_sel_27),
    .up_rx_out_clk_sel (up_rx_out_clk_sel_27),
    .up_rx_enb (up_rx_enb_27),
    .up_rx_addr (up_rx_addr_27),
    .up_rx_wr (up_rx_wr_27),
    .up_rx_wdata (up_rx_wdata_27),
    .up_rx_rdata (up_rx_rdata_27),
    .up_rx_ready (up_rx_ready_27),
    .up_tx_pll_locked (up_tx_pll_locked_27),
    .up_tx_rst (up_tx_rst_27),
    .up_tx_user_ready (up_tx_user_ready_27),
    .up_tx_rst_done (up_tx_rst_done_27),
    .up_tx_bufstatus (up_tx_bufstatus_27),
    .up_tx_prbsforceerr (up_tx_prbsforceerr_27),
    .up_tx_prbssel (up_tx_prbssel_27),
    .up_tx_lpm_dfe_n (up_tx_lpm_dfe_n_27),
    .up_tx_rate (up_tx_rate_27),
    .up_tx_sys_clk_sel (up_tx_sys_clk_sel_27),
    .up_tx_out_clk_sel (up_tx_out_clk_sel_27),
    .up_tx_diffctrl (up_tx_diffctrl_27),
    .up_tx_postcursor (up_tx_postcursor_27),
    .up_tx_precursor (up_tx_precursor_27),
    .up_tx_enb (up_tx_enb_27),
    .up_tx_addr (up_tx_addr_27),
    .up_tx_wr (up_tx_wr_27),
    .up_tx_wdata (up_tx_wdata_27),
    .up_tx_rdata (up_tx_rdata_27),
    .up_tx_ready (up_tx_ready_27));
  end else begin
  assign rx_out_clk_27 = 1'd0;
  assign rx_charisk_27 = 4'd0;
  assign rx_disperr_27 = 4'd0;
  assign rx_notintable_27 = 4'd0;
  assign rx_data_27 = 32'd0;
  assign tx_27_p = 1'd0;
  assign tx_27_n = 1'd0;
  assign tx_out_clk_27 = 1'd0;
  assign up_es_rdata_27 = 16'd0;
  assign up_es_ready_27 = 1'd0;
  assign up_rx_pll_locked_27 = 1'd0;
  assign up_rx_rst_done_27 = 1'd0;
  assign up_rx_rdata_27 = 16'd0;
  assign up_rx_ready_27 = 1'd0;
  assign up_tx_pll_locked_27 = 1'd0;
  assign up_tx_rst_done_27 = 1'd0;
  assign up_tx_rdata_27 = 16'd0;
  assign up_tx_ready_27 = 1'd0;
  end
  endgenerate

  generate
  if (NUM_OF_LANES >= 29) begin
  util_adxcvr_xcm #(
    .XCVR_TYPE (XCVR_TYPE),
    .QPLL_REFCLK_DIV (QPLL_REFCLK_DIV),
    .QPLL_FBDIV_RATIO (QPLL_FBDIV_RATIO),
    .POR_CFG (POR_CFG),
    .PPF0_CFG (PPF0_CFG),
    .PPF1_CFG (PPF1_CFG),
    .QPLL_CFG (QPLL_CFG),
    .QPLL_FBDIV (QPLL_FBDIV),
    .QPLL_CFG0 (QPLL_CFG0),
    .QPLL_CFG1 (QPLL_CFG1),
    .QPLL_CFG1_G3 (QPLL_CFG1_G3),
    .QPLL_CFG2 (QPLL_CFG2),
    .QPLL_CFG2_G3 (QPLL_CFG2_G3),
    .QPLL_CFG3 (QPLL_CFG3),
    .QPLL_CP_G3 (QPLL_CP_G3),
    .QPLL_LPF (QPLL_LPF),
    .QPLL_CP (QPLL_CP),
    .QPLL_CFG4 (QPLL_CFG4)
  ) i_xcm_28 (
    .qpll_ref_clk (qpll_ref_clk_28),
    .qpll_sel (qpll_sel_28),
    .qpll2ch_clk (qpll2ch_clk_28),
    .qpll2ch_ref_clk (qpll2ch_ref_clk_28),
    .qpll2ch_locked (qpll2ch_locked_28),
    .qpll1_clk (qpll1_clk_28),
    .qpll1_ref_clk (qpll1_ref_clk_28),
    .qpll1_locked (qpll1_locked_28),
    .up_rstn (up_rstn),
    .up_clk (up_clk),
    .up_qpll_rst (up_qpll_rst_28),
    .up_cm_enb (up_cm_enb_28),
    .up_cm_addr (up_cm_addr_28),
    .up_cm_wr (up_cm_wr_28),
    .up_cm_wdata (up_cm_wdata_28),
    .up_cm_rdata (up_cm_rdata_28),
    .up_cm_ready (up_cm_ready_28));
  end else begin
  assign qpll2ch_clk_28 = 1'd0;
  assign qpll2ch_ref_clk_28 = 1'd0;
  assign qpll2ch_locked_28 = 1'd0;
  assign qpll1_clk_28 = 1'd0;
  assign qpll1_ref_clk_28 = 1'd0;
  assign qpll1_locked_28 = 1'd0;
  assign up_cm_rdata_28 = 16'd0;
  assign up_cm_ready_28 = 1'd0;
  end
  endgenerate

  generate
  if (NUM_OF_LANES >= 29) begin
  util_adxcvr_xch #(
    .XCVR_TYPE (XCVR_TYPE),
    .LINK_MODE (LINK_MODE),
    .DATA_PATH_WIDTH (DATA_PATH_WIDTH),
    .CPLL_FBDIV (CPLL_FBDIV),
    .CPLL_FBDIV_4_5 (CPLL_FBDIV_4_5),
    .CPLL_CFG0 (CPLL_CFG0),
    .CPLL_CFG1 (CPLL_CFG1),
    .CPLL_CFG2 (CPLL_CFG2),
    .CPLL_CFG3 (CPLL_CFG3),
    .TX_OUT_DIV (TX_OUT_DIV),
    .TX_CLK25_DIV (TX_CLK25_DIV),
    .TX_POLARITY ((TX_LANE_INVERT >> 28) & 1),
    .TX_PI_BIASSET (TX_PI_BIASSET),
    .TXPI_CFG (TXPI_CFG),
    .A_TXDIFFCTRL (A_TXDIFFCTRL),
    .RX_OUT_DIV (RX_OUT_DIV),
    .RX_CLK25_DIV (RX_CLK25_DIV),
    .RX_DFE_LPM_CFG (RX_DFE_LPM_CFG),
    .RX_PMA_CFG (RX_PMA_CFG),
    .RX_CDR_CFG (RX_CDR_CFG),
    .RX_POLARITY ((RX_LANE_INVERT >> 28) & 1),
    .RXCDR_CFG0 (RXCDR_CFG0),
    .RXCDR_CFG2 (RXCDR_CFG2),
    .RXCDR_CFG2_GEN2 (RXCDR_CFG2_GEN2),
    .RXCDR_CFG2_GEN4 (RXCDR_CFG2_GEN4),
    .RXCDR_CFG3 (RXCDR_CFG3),
    .RXCDR_CFG3_GEN2 (RXCDR_CFG3_GEN2),
    .RXCDR_CFG3_GEN3 (RXCDR_CFG3_GEN3),
    .RXCDR_CFG3_GEN4 (RXCDR_CFG3_GEN4),
    .RXDFE_KH_CFG2 (RXDFE_KH_CFG2),
    .RXDFE_KH_CFG3 (RXDFE_KH_CFG3),
    .RX_WIDEMODE_CDR (RX_WIDEMODE_CDR),
    .RX_XMODE_SEL (RX_XMODE_SEL),
    .TXDRV_FREQBAND (TXDRV_FREQBAND),
    .TXFE_CFG0 (TXFE_CFG0),
    .TXFE_CFG1 (TXFE_CFG1),
    .TXFE_CFG2 (TXFE_CFG2),
    .TXFE_CFG3 (TXFE_CFG3),
    .TXPI_CFG0 (TXPI_CFG0),
    .TXPI_CFG1 (TXPI_CFG1),
    .TXSWBST_EN (TXSWBST_EN),
    .CH_HSPMUX (CH_HSPMUX),
    .PREIQ_FREQ_BST (PREIQ_FREQ_BST),
    .RXPI_CFG0 (RXPI_CFG0),
    .RXPI_CFG1 (RXPI_CFG1),
    .RTX_BUF_CML_CTRL (RTX_BUF_CML_CTRL)
  ) i_xch_28 (
    .qpll2ch_clk (qpll2ch_clk_28),
    .qpll2ch_ref_clk (qpll2ch_ref_clk_28),
    .qpll2ch_locked (qpll2ch_locked_28),
    .qpll1_clk (qpll1_clk_28),
    .qpll1_ref_clk (qpll1_ref_clk_28),
    .qpll1_locked (qpll1_locked_28),
    .cpll_ref_clk (cpll_ref_clk_28),
    .up_cpll_rst (up_cpll_rst_28),
    .rx_p (rx_28_p),
    .rx_n (rx_28_n),
    .rx_out_clk (rx_out_clk_28),
    .rx_out_clk_div2 (rx_out_clk_div2_28),
    .rx_clk (rx_clk_28),
    .rx_clk_2x (rx_clk_2x_28),
    .rx_charisk (rx_charisk_28),
    .rx_disperr (rx_disperr_28),
    .rx_notintable (rx_notintable_28),
    .rx_data (rx_data_28),
    .rx_calign (rx_calign_28),
    .rx_header(rx_header_28),
    .rx_block_sync(rx_block_sync_28),
    .tx_p (tx_28_p),
    .tx_n (tx_28_n),
    .tx_out_clk (tx_out_clk_28),
    .tx_out_clk_div2 (tx_out_clk_div2_28),
    .tx_clk (tx_clk_28),
    .tx_clk_2x (tx_clk_2x_28),
    .tx_charisk (tx_charisk_28),
    .tx_data (tx_data_28),
    .tx_header (tx_header_28),
    .up_rstn (up_rstn),
    .up_clk (up_clk),
    .up_es_enb (up_es_enb_28),
    .up_es_addr (up_es_addr_28),
    .up_es_wr (up_es_wr_28),
    .up_es_wdata (up_es_wdata_28),
    .up_es_rdata (up_es_rdata_28),
    .up_es_ready (up_es_ready_28),
    .up_es_reset (up_es_reset_28),
    .up_rx_pll_locked (up_rx_pll_locked_28),
    .up_rx_rst (up_rx_rst_28),
    .up_rx_user_ready (up_rx_user_ready_28),
    .up_rx_rst_done (up_rx_rst_done_28),
    .up_rx_prbssel (up_rx_prbssel_28),
    .up_rx_prbscntreset (up_rx_prbscntreset_28),
    .up_rx_prbserr (up_rx_prbserr_28),
    .up_rx_prbslocked (up_rx_prbslocked_28),
    .up_rx_bufstatus (up_rx_bufstatus_28),
    .up_rx_bufstatus_rst (up_rx_bufstatus_rst_28),
    .up_rx_lpm_dfe_n (up_rx_lpm_dfe_n_28),
    .up_rx_rate (up_rx_rate_28),
    .up_rx_sys_clk_sel (up_rx_sys_clk_sel_28),
    .up_rx_out_clk_sel (up_rx_out_clk_sel_28),
    .up_rx_enb (up_rx_enb_28),
    .up_rx_addr (up_rx_addr_28),
    .up_rx_wr (up_rx_wr_28),
    .up_rx_wdata (up_rx_wdata_28),
    .up_rx_rdata (up_rx_rdata_28),
    .up_rx_ready (up_rx_ready_28),
    .up_tx_pll_locked (up_tx_pll_locked_28),
    .up_tx_rst (up_tx_rst_28),
    .up_tx_user_ready (up_tx_user_ready_28),
    .up_tx_rst_done (up_tx_rst_done_28),
    .up_tx_bufstatus (up_tx_bufstatus_28),
    .up_tx_prbsforceerr (up_tx_prbsforceerr_28),
    .up_tx_prbssel (up_tx_prbssel_28),
    .up_tx_lpm_dfe_n (up_tx_lpm_dfe_n_28),
    .up_tx_rate (up_tx_rate_28),
    .up_tx_sys_clk_sel (up_tx_sys_clk_sel_28),
    .up_tx_out_clk_sel (up_tx_out_clk_sel_28),
    .up_tx_diffctrl (up_tx_diffctrl_28),
    .up_tx_postcursor (up_tx_postcursor_28),
    .up_tx_precursor (up_tx_precursor_28),
    .up_tx_enb (up_tx_enb_28),
    .up_tx_addr (up_tx_addr_28),
    .up_tx_wr (up_tx_wr_28),
    .up_tx_wdata (up_tx_wdata_28),
    .up_tx_rdata (up_tx_rdata_28),
    .up_tx_ready (up_tx_ready_28));
  end else begin
  assign rx_out_clk_28 = 1'd0;
  assign rx_charisk_28 = 4'd0;
  assign rx_disperr_28 = 4'd0;
  assign rx_notintable_28 = 4'd0;
  assign rx_data_28 = 32'd0;
  assign tx_28_p = 1'd0;
  assign tx_28_n = 1'd0;
  assign tx_out_clk_28 = 1'd0;
  assign up_es_rdata_28 = 16'd0;
  assign up_es_ready_28 = 1'd0;
  assign up_rx_pll_locked_28 = 1'd0;
  assign up_rx_rst_done_28 = 1'd0;
  assign up_rx_rdata_28 = 16'd0;
  assign up_rx_ready_28 = 1'd0;
  assign up_tx_pll_locked_28 = 1'd0;
  assign up_tx_rst_done_28 = 1'd0;
  assign up_tx_rdata_28 = 16'd0;
  assign up_tx_ready_28 = 1'd0;
  end
  endgenerate

  generate
  if (NUM_OF_LANES >= 30) begin
  util_adxcvr_xch #(
    .XCVR_TYPE (XCVR_TYPE),
    .LINK_MODE (LINK_MODE),
    .DATA_PATH_WIDTH (DATA_PATH_WIDTH),
    .CPLL_FBDIV (CPLL_FBDIV),
    .CPLL_FBDIV_4_5 (CPLL_FBDIV_4_5),
    .CPLL_CFG0 (CPLL_CFG0),
    .CPLL_CFG1 (CPLL_CFG1),
    .CPLL_CFG2 (CPLL_CFG2),
    .CPLL_CFG3 (CPLL_CFG3),
    .TX_OUT_DIV (TX_OUT_DIV),
    .TX_CLK25_DIV (TX_CLK25_DIV),
    .TX_POLARITY ((TX_LANE_INVERT >> 29) & 1),
    .TX_PI_BIASSET (TX_PI_BIASSET),
    .TXPI_CFG (TXPI_CFG),
    .A_TXDIFFCTRL (A_TXDIFFCTRL),
    .RX_OUT_DIV (RX_OUT_DIV),
    .RX_CLK25_DIV (RX_CLK25_DIV),
    .RX_DFE_LPM_CFG (RX_DFE_LPM_CFG),
    .RX_PMA_CFG (RX_PMA_CFG),
    .RX_CDR_CFG (RX_CDR_CFG),
    .RX_POLARITY ((RX_LANE_INVERT >> 29) & 1),
    .RXCDR_CFG0 (RXCDR_CFG0),
    .RXCDR_CFG2 (RXCDR_CFG2),
    .RXCDR_CFG2_GEN2 (RXCDR_CFG2_GEN2),
    .RXCDR_CFG2_GEN4 (RXCDR_CFG2_GEN4),
    .RXCDR_CFG3 (RXCDR_CFG3),
    .RXCDR_CFG3_GEN2 (RXCDR_CFG3_GEN2),
    .RXCDR_CFG3_GEN3 (RXCDR_CFG3_GEN3),
    .RXCDR_CFG3_GEN4 (RXCDR_CFG3_GEN4),
    .RXDFE_KH_CFG2 (RXDFE_KH_CFG2),
    .RXDFE_KH_CFG3 (RXDFE_KH_CFG3),
    .RX_WIDEMODE_CDR (RX_WIDEMODE_CDR),
    .RX_XMODE_SEL (RX_XMODE_SEL),
    .TXDRV_FREQBAND (TXDRV_FREQBAND),
    .TXFE_CFG0 (TXFE_CFG0),
    .TXFE_CFG1 (TXFE_CFG1),
    .TXFE_CFG2 (TXFE_CFG2),
    .TXFE_CFG3 (TXFE_CFG3),
    .TXPI_CFG0 (TXPI_CFG0),
    .TXPI_CFG1 (TXPI_CFG1),
    .TXSWBST_EN (TXSWBST_EN),
    .CH_HSPMUX (CH_HSPMUX),
    .PREIQ_FREQ_BST (PREIQ_FREQ_BST),
    .RXPI_CFG0 (RXPI_CFG0),
    .RXPI_CFG1 (RXPI_CFG1),
    .RTX_BUF_CML_CTRL (RTX_BUF_CML_CTRL)
  ) i_xch_29 (
    .qpll2ch_clk (qpll2ch_clk_28),
    .qpll2ch_ref_clk (qpll2ch_ref_clk_28),
    .qpll2ch_locked (qpll2ch_locked_28),
    .qpll1_clk (qpll1_clk_28),
    .qpll1_ref_clk (qpll1_ref_clk_28),
    .qpll1_locked (qpll1_locked_28),
    .cpll_ref_clk (cpll_ref_clk_29),
    .up_cpll_rst (up_cpll_rst_29),
    .rx_p (rx_29_p),
    .rx_n (rx_29_n),
    .rx_out_clk (rx_out_clk_29),
    .rx_out_clk_div2 (rx_out_clk_div2_29),
    .rx_clk (rx_clk_29),
    .rx_clk_2x (rx_clk_2x_29),
    .rx_charisk (rx_charisk_29),
    .rx_disperr (rx_disperr_29),
    .rx_notintable (rx_notintable_29),
    .rx_data (rx_data_29),
    .rx_calign (rx_calign_29),
    .rx_header(rx_header_29),
    .rx_block_sync(rx_block_sync_29),
    .tx_p (tx_29_p),
    .tx_n (tx_29_n),
    .tx_out_clk (tx_out_clk_29),
    .tx_out_clk_div2 (tx_out_clk_div2_29),
    .tx_clk (tx_clk_29),
    .tx_clk_2x (tx_clk_2x_29),
    .tx_charisk (tx_charisk_29),
    .tx_data (tx_data_29),
    .tx_header (tx_header_29),
    .up_rstn (up_rstn),
    .up_clk (up_clk),
    .up_es_enb (up_es_enb_29),
    .up_es_addr (up_es_addr_29),
    .up_es_wr (up_es_wr_29),
    .up_es_wdata (up_es_wdata_29),
    .up_es_rdata (up_es_rdata_29),
    .up_es_ready (up_es_ready_29),
    .up_es_reset (up_es_reset_29),
    .up_rx_pll_locked (up_rx_pll_locked_29),
    .up_rx_rst (up_rx_rst_29),
    .up_rx_user_ready (up_rx_user_ready_29),
    .up_rx_rst_done (up_rx_rst_done_29),
    .up_rx_prbssel (up_rx_prbssel_29),
    .up_rx_prbscntreset (up_rx_prbscntreset_29),
    .up_rx_prbserr (up_rx_prbserr_29),
    .up_rx_prbslocked (up_rx_prbslocked_29),
    .up_rx_bufstatus (up_rx_bufstatus_29),
    .up_rx_bufstatus_rst (up_rx_bufstatus_rst_29),
    .up_rx_lpm_dfe_n (up_rx_lpm_dfe_n_29),
    .up_rx_rate (up_rx_rate_29),
    .up_rx_sys_clk_sel (up_rx_sys_clk_sel_29),
    .up_rx_out_clk_sel (up_rx_out_clk_sel_29),
    .up_rx_enb (up_rx_enb_29),
    .up_rx_addr (up_rx_addr_29),
    .up_rx_wr (up_rx_wr_29),
    .up_rx_wdata (up_rx_wdata_29),
    .up_rx_rdata (up_rx_rdata_29),
    .up_rx_ready (up_rx_ready_29),
    .up_tx_pll_locked (up_tx_pll_locked_29),
    .up_tx_rst (up_tx_rst_29),
    .up_tx_user_ready (up_tx_user_ready_29),
    .up_tx_rst_done (up_tx_rst_done_29),
    .up_tx_bufstatus (up_tx_bufstatus_29),
    .up_tx_prbsforceerr (up_tx_prbsforceerr_29),
    .up_tx_prbssel (up_tx_prbssel_29),
    .up_tx_lpm_dfe_n (up_tx_lpm_dfe_n_29),
    .up_tx_rate (up_tx_rate_29),
    .up_tx_sys_clk_sel (up_tx_sys_clk_sel_29),
    .up_tx_out_clk_sel (up_tx_out_clk_sel_29),
    .up_tx_diffctrl (up_tx_diffctrl_29),
    .up_tx_postcursor (up_tx_postcursor_29),
    .up_tx_precursor (up_tx_precursor_29),
    .up_tx_enb (up_tx_enb_29),
    .up_tx_addr (up_tx_addr_29),
    .up_tx_wr (up_tx_wr_29),
    .up_tx_wdata (up_tx_wdata_29),
    .up_tx_rdata (up_tx_rdata_29),
    .up_tx_ready (up_tx_ready_29));
  end else begin
  assign rx_out_clk_29 = 1'd0;
  assign rx_charisk_29 = 4'd0;
  assign rx_disperr_29 = 4'd0;
  assign rx_notintable_29 = 4'd0;
  assign rx_data_29 = 32'd0;
  assign tx_29_p = 1'd0;
  assign tx_29_n = 1'd0;
  assign tx_out_clk_29 = 1'd0;
  assign up_es_rdata_29 = 16'd0;
  assign up_es_ready_29 = 1'd0;
  assign up_rx_pll_locked_29 = 1'd0;
  assign up_rx_rst_done_29 = 1'd0;
  assign up_rx_rdata_29 = 16'd0;
  assign up_rx_ready_29 = 1'd0;
  assign up_tx_pll_locked_29 = 1'd0;
  assign up_tx_rst_done_29 = 1'd0;
  assign up_tx_rdata_29 = 16'd0;
  assign up_tx_ready_29 = 1'd0;
  end
  endgenerate

  generate
  if (NUM_OF_LANES >= 31) begin
  util_adxcvr_xch #(
    .XCVR_TYPE (XCVR_TYPE),
    .LINK_MODE (LINK_MODE),
    .DATA_PATH_WIDTH (DATA_PATH_WIDTH),
    .CPLL_FBDIV (CPLL_FBDIV),
    .CPLL_FBDIV_4_5 (CPLL_FBDIV_4_5),
    .CPLL_CFG0 (CPLL_CFG0),
    .CPLL_CFG1 (CPLL_CFG1),
    .CPLL_CFG2 (CPLL_CFG2),
    .CPLL_CFG3 (CPLL_CFG3),
    .TX_OUT_DIV (TX_OUT_DIV),
    .TX_CLK25_DIV (TX_CLK25_DIV),
    .TX_POLARITY ((TX_LANE_INVERT >> 30) & 1),
    .TX_PI_BIASSET (TX_PI_BIASSET),
    .TXPI_CFG (TXPI_CFG),
    .A_TXDIFFCTRL (A_TXDIFFCTRL),
    .RX_OUT_DIV (RX_OUT_DIV),
    .RX_CLK25_DIV (RX_CLK25_DIV),
    .RX_DFE_LPM_CFG (RX_DFE_LPM_CFG),
    .RX_PMA_CFG (RX_PMA_CFG),
    .RX_CDR_CFG (RX_CDR_CFG),
    .RX_POLARITY ((RX_LANE_INVERT >> 30) & 1),
    .RXCDR_CFG0 (RXCDR_CFG0),
    .RXCDR_CFG2 (RXCDR_CFG2),
    .RXCDR_CFG2_GEN2 (RXCDR_CFG2_GEN2),
    .RXCDR_CFG2_GEN4 (RXCDR_CFG2_GEN4),
    .RXCDR_CFG3 (RXCDR_CFG3),
    .RXCDR_CFG3_GEN2 (RXCDR_CFG3_GEN2),
    .RXCDR_CFG3_GEN3 (RXCDR_CFG3_GEN3),
    .RXCDR_CFG3_GEN4 (RXCDR_CFG3_GEN4),
    .RXDFE_KH_CFG2 (RXDFE_KH_CFG2),
    .RXDFE_KH_CFG3 (RXDFE_KH_CFG3),
    .RX_WIDEMODE_CDR (RX_WIDEMODE_CDR),
    .RX_XMODE_SEL (RX_XMODE_SEL),
    .TXDRV_FREQBAND (TXDRV_FREQBAND),
    .TXFE_CFG0 (TXFE_CFG0),
    .TXFE_CFG1 (TXFE_CFG1),
    .TXFE_CFG2 (TXFE_CFG2),
    .TXFE_CFG3 (TXFE_CFG3),
    .TXPI_CFG0 (TXPI_CFG0),
    .TXPI_CFG1 (TXPI_CFG1),
    .TXSWBST_EN (TXSWBST_EN),
    .CH_HSPMUX (CH_HSPMUX),
    .PREIQ_FREQ_BST (PREIQ_FREQ_BST),
    .RXPI_CFG0 (RXPI_CFG0),
    .RXPI_CFG1 (RXPI_CFG1),
    .RTX_BUF_CML_CTRL (RTX_BUF_CML_CTRL)
  ) i_xch_30 (
    .qpll2ch_clk (qpll2ch_clk_28),
    .qpll2ch_ref_clk (qpll2ch_ref_clk_28),
    .qpll2ch_locked (qpll2ch_locked_28),
    .qpll1_clk (qpll1_clk_28),
    .qpll1_ref_clk (qpll1_ref_clk_28),
    .qpll1_locked (qpll1_locked_28),
    .cpll_ref_clk (cpll_ref_clk_30),
    .up_cpll_rst (up_cpll_rst_30),
    .rx_p (rx_30_p),
    .rx_n (rx_30_n),
    .rx_out_clk (rx_out_clk_30),
    .rx_out_clk_div2 (rx_out_clk_div2_30),
    .rx_clk (rx_clk_30),
    .rx_clk_2x (rx_clk_2x_30),
    .rx_charisk (rx_charisk_30),
    .rx_disperr (rx_disperr_30),
    .rx_notintable (rx_notintable_30),
    .rx_data (rx_data_30),
    .rx_calign (rx_calign_30),
    .rx_header(rx_header_30),
    .rx_block_sync(rx_block_sync_30),
    .tx_p (tx_30_p),
    .tx_n (tx_30_n),
    .tx_out_clk (tx_out_clk_30),
    .tx_out_clk_div2 (tx_out_clk_div2_30),
    .tx_clk (tx_clk_30),
    .tx_clk_2x (tx_clk_2x_30),
    .tx_charisk (tx_charisk_30),
    .tx_data (tx_data_30),
    .tx_header (tx_header_30),
    .up_rstn (up_rstn),
    .up_clk (up_clk),
    .up_es_enb (up_es_enb_30),
    .up_es_addr (up_es_addr_30),
    .up_es_wr (up_es_wr_30),
    .up_es_wdata (up_es_wdata_30),
    .up_es_rdata (up_es_rdata_30),
    .up_es_ready (up_es_ready_30),
    .up_es_reset (up_es_reset_30),
    .up_rx_pll_locked (up_rx_pll_locked_30),
    .up_rx_rst (up_rx_rst_30),
    .up_rx_user_ready (up_rx_user_ready_30),
    .up_rx_rst_done (up_rx_rst_done_30),
    .up_rx_prbssel (up_rx_prbssel_30),
    .up_rx_prbscntreset (up_rx_prbscntreset_30),
    .up_rx_prbserr (up_rx_prbserr_30),
    .up_rx_prbslocked (up_rx_prbslocked_30),
    .up_rx_bufstatus (up_rx_bufstatus_30),
    .up_rx_bufstatus_rst (up_rx_bufstatus_rst_30),
    .up_rx_lpm_dfe_n (up_rx_lpm_dfe_n_30),
    .up_rx_rate (up_rx_rate_30),
    .up_rx_sys_clk_sel (up_rx_sys_clk_sel_30),
    .up_rx_out_clk_sel (up_rx_out_clk_sel_30),
    .up_rx_enb (up_rx_enb_30),
    .up_rx_addr (up_rx_addr_30),
    .up_rx_wr (up_rx_wr_30),
    .up_rx_wdata (up_rx_wdata_30),
    .up_rx_rdata (up_rx_rdata_30),
    .up_rx_ready (up_rx_ready_30),
    .up_tx_pll_locked (up_tx_pll_locked_30),
    .up_tx_rst (up_tx_rst_30),
    .up_tx_user_ready (up_tx_user_ready_30),
    .up_tx_rst_done (up_tx_rst_done_30),
    .up_tx_bufstatus (up_tx_bufstatus_30),
    .up_tx_prbsforceerr (up_tx_prbsforceerr_30),
    .up_tx_prbssel (up_tx_prbssel_30),
    .up_tx_lpm_dfe_n (up_tx_lpm_dfe_n_30),
    .up_tx_rate (up_tx_rate_30),
    .up_tx_sys_clk_sel (up_tx_sys_clk_sel_30),
    .up_tx_out_clk_sel (up_tx_out_clk_sel_30),
    .up_tx_diffctrl (up_tx_diffctrl_30),
    .up_tx_postcursor (up_tx_postcursor_30),
    .up_tx_precursor (up_tx_precursor_30),
    .up_tx_enb (up_tx_enb_30),
    .up_tx_addr (up_tx_addr_30),
    .up_tx_wr (up_tx_wr_30),
    .up_tx_wdata (up_tx_wdata_30),
    .up_tx_rdata (up_tx_rdata_30),
    .up_tx_ready (up_tx_ready_30));
  end else begin
  assign rx_out_clk_30 = 1'd0;
  assign rx_charisk_30 = 4'd0;
  assign rx_disperr_30 = 4'd0;
  assign rx_notintable_30 = 4'd0;
  assign rx_data_30 = 32'd0;
  assign tx_30_p = 1'd0;
  assign tx_30_n = 1'd0;
  assign tx_out_clk_30 = 1'd0;
  assign up_es_rdata_30 = 16'd0;
  assign up_es_ready_30 = 1'd0;
  assign up_rx_pll_locked_30 = 1'd0;
  assign up_rx_rst_done_30 = 1'd0;
  assign up_rx_rdata_30 = 16'd0;
  assign up_rx_ready_30 = 1'd0;
  assign up_tx_pll_locked_30 = 1'd0;
  assign up_tx_rst_done_30 = 1'd0;
  assign up_tx_rdata_30 = 16'd0;
  assign up_tx_ready_30 = 1'd0;
  end
  endgenerate

  generate
  if (NUM_OF_LANES >= 32) begin
  util_adxcvr_xch #(
    .XCVR_TYPE (XCVR_TYPE),
    .LINK_MODE (LINK_MODE),
    .DATA_PATH_WIDTH (DATA_PATH_WIDTH),
    .CPLL_FBDIV (CPLL_FBDIV),
    .CPLL_FBDIV_4_5 (CPLL_FBDIV_4_5),
    .CPLL_CFG0 (CPLL_CFG0),
    .CPLL_CFG1 (CPLL_CFG1),
    .CPLL_CFG2 (CPLL_CFG2),
    .CPLL_CFG3 (CPLL_CFG3),
    .TX_OUT_DIV (TX_OUT_DIV),
    .TX_CLK25_DIV (TX_CLK25_DIV),
    .TX_POLARITY ((TX_LANE_INVERT >> 31) & 1),
    .TX_PI_BIASSET (TX_PI_BIASSET),
    .TXPI_CFG (TXPI_CFG),
    .A_TXDIFFCTRL (A_TXDIFFCTRL),
    .RX_OUT_DIV (RX_OUT_DIV),
    .RX_CLK25_DIV (RX_CLK25_DIV),
    .RX_DFE_LPM_CFG (RX_DFE_LPM_CFG),
    .RX_PMA_CFG (RX_PMA_CFG),
    .RX_CDR_CFG (RX_CDR_CFG),
    .RX_POLARITY ((RX_LANE_INVERT >> 31) & 1),
    .RXCDR_CFG0 (RXCDR_CFG0),
    .RXCDR_CFG2 (RXCDR_CFG2),
    .RXCDR_CFG2_GEN2 (RXCDR_CFG2_GEN2),
    .RXCDR_CFG2_GEN4 (RXCDR_CFG2_GEN4),
    .RXCDR_CFG3 (RXCDR_CFG3),
    .RXCDR_CFG3_GEN2 (RXCDR_CFG3_GEN2),
    .RXCDR_CFG3_GEN3 (RXCDR_CFG3_GEN3),
    .RXCDR_CFG3_GEN4 (RXCDR_CFG3_GEN4),
    .RXDFE_KH_CFG2 (RXDFE_KH_CFG2),
    .RXDFE_KH_CFG3 (RXDFE_KH_CFG3),
    .RX_WIDEMODE_CDR (RX_WIDEMODE_CDR),
    .RX_XMODE_SEL (RX_XMODE_SEL),
    .TXDRV_FREQBAND (TXDRV_FREQBAND),
    .TXFE_CFG0 (TXFE_CFG0),
    .TXFE_CFG1 (TXFE_CFG1),
    .TXFE_CFG2 (TXFE_CFG2),
    .TXFE_CFG3 (TXFE_CFG3),
    .TXPI_CFG0 (TXPI_CFG0),
    .TXPI_CFG1 (TXPI_CFG1),
    .TXSWBST_EN (TXSWBST_EN),
    .CH_HSPMUX (CH_HSPMUX),
    .PREIQ_FREQ_BST (PREIQ_FREQ_BST),
    .RXPI_CFG0 (RXPI_CFG0),
    .RXPI_CFG1 (RXPI_CFG1),
    .RTX_BUF_CML_CTRL (RTX_BUF_CML_CTRL)
  ) i_xch_31 (
    .qpll2ch_clk (qpll2ch_clk_28),
    .qpll2ch_ref_clk (qpll2ch_ref_clk_28),
    .qpll2ch_locked (qpll2ch_locked_28),
    .qpll1_clk (qpll1_clk_28),
    .qpll1_ref_clk (qpll1_ref_clk_28),
    .qpll1_locked (qpll1_locked_28),
    .cpll_ref_clk (cpll_ref_clk_31),
    .up_cpll_rst (up_cpll_rst_31),
    .rx_p (rx_31_p),
    .rx_n (rx_31_n),
    .rx_out_clk (rx_out_clk_31),
    .rx_out_clk_div2 (rx_out_clk_div2_31),
    .rx_clk (rx_clk_31),
    .rx_clk_2x (rx_clk_2x_31),
    .rx_charisk (rx_charisk_31),
    .rx_disperr (rx_disperr_31),
    .rx_notintable (rx_notintable_31),
    .rx_data (rx_data_31),
    .rx_calign (rx_calign_31),
    .rx_header(rx_header_31),
    .rx_block_sync(rx_block_sync_31),
    .tx_p (tx_31_p),
    .tx_n (tx_31_n),
    .tx_out_clk (tx_out_clk_31),
    .tx_out_clk_div2 (tx_out_clk_div2_31),
    .tx_clk (tx_clk_31),
    .tx_clk_2x (tx_clk_2x_31),
    .tx_charisk (tx_charisk_31),
    .tx_data (tx_data_31),
    .tx_header (tx_header_31),
    .up_rstn (up_rstn),
    .up_clk (up_clk),
    .up_es_enb (up_es_enb_31),
    .up_es_addr (up_es_addr_31),
    .up_es_wr (up_es_wr_31),
    .up_es_wdata (up_es_wdata_31),
    .up_es_rdata (up_es_rdata_31),
    .up_es_ready (up_es_ready_31),
    .up_es_reset (up_es_reset_31),
    .up_rx_pll_locked (up_rx_pll_locked_31),
    .up_rx_rst (up_rx_rst_31),
    .up_rx_user_ready (up_rx_user_ready_31),
    .up_rx_rst_done (up_rx_rst_done_31),
    .up_rx_prbssel (up_rx_prbssel_31),
    .up_rx_prbscntreset (up_rx_prbscntreset_31),
    .up_rx_prbserr (up_rx_prbserr_31),
    .up_rx_prbslocked (up_rx_prbslocked_31),
    .up_rx_bufstatus (up_rx_bufstatus_31),
    .up_rx_bufstatus_rst (up_rx_bufstatus_rst_31),
    .up_rx_lpm_dfe_n (up_rx_lpm_dfe_n_31),
    .up_rx_rate (up_rx_rate_31),
    .up_rx_sys_clk_sel (up_rx_sys_clk_sel_31),
    .up_rx_out_clk_sel (up_rx_out_clk_sel_31),
    .up_rx_enb (up_rx_enb_31),
    .up_rx_addr (up_rx_addr_31),
    .up_rx_wr (up_rx_wr_31),
    .up_rx_wdata (up_rx_wdata_31),
    .up_rx_rdata (up_rx_rdata_31),
    .up_rx_ready (up_rx_ready_31),
    .up_tx_pll_locked (up_tx_pll_locked_31),
    .up_tx_rst (up_tx_rst_31),
    .up_tx_user_ready (up_tx_user_ready_31),
    .up_tx_rst_done (up_tx_rst_done_31),
    .up_tx_bufstatus (up_tx_bufstatus_31),
    .up_tx_prbsforceerr (up_tx_prbsforceerr_31),
    .up_tx_prbssel (up_tx_prbssel_31),
    .up_tx_lpm_dfe_n (up_tx_lpm_dfe_n_31),
    .up_tx_rate (up_tx_rate_31),
    .up_tx_sys_clk_sel (up_tx_sys_clk_sel_31),
    .up_tx_out_clk_sel (up_tx_out_clk_sel_31),
    .up_tx_diffctrl (up_tx_diffctrl_31),
    .up_tx_postcursor (up_tx_postcursor_31),
    .up_tx_precursor (up_tx_precursor_31),
    .up_tx_enb (up_tx_enb_31),
    .up_tx_addr (up_tx_addr_31),
    .up_tx_wr (up_tx_wr_31),
    .up_tx_wdata (up_tx_wdata_31),
    .up_tx_rdata (up_tx_rdata_31),
    .up_tx_ready (up_tx_ready_31));
  end else begin
  assign rx_out_clk_31 = 1'd0;
  assign rx_charisk_31 = 4'd0;
  assign rx_disperr_31 = 4'd0;
  assign rx_notintable_31 = 4'd0;
  assign rx_data_31 = 32'd0;
  assign tx_31_p = 1'd0;
  assign tx_31_n = 1'd0;
  assign tx_out_clk_31 = 1'd0;
  assign up_es_rdata_31 = 16'd0;
  assign up_es_ready_31 = 1'd0;
  assign up_rx_pll_locked_31 = 1'd0;
  assign up_rx_rst_done_31 = 1'd0;
  assign up_rx_rdata_31 = 16'd0;
  assign up_rx_ready_31 = 1'd0;
  assign up_tx_pll_locked_31 = 1'd0;
  assign up_tx_rst_done_31 = 1'd0;
  assign up_tx_rdata_31 = 16'd0;
  assign up_tx_ready_31 = 1'd0;
  end
  endgenerate

endmodule
